我本人刚开始学Java,一头雾水😭
可以使用ThreadLocal来隔离这个共享的数组,每次排序都是用这个共享变量的副本
public class Test {
private static ThreadLocal<int[]> arrThreadLocal = new ThreadLocal<int[]>(){
@Override
protected int[] initialValue() {
return new int[]{1, 4, -22, 12312, 211, -213123};
}
};
public static void main(String[] args) {
List<Thread> waitStartThread = new ArrayList<>();
for (int i = 0; i < 2; i++) {
int finalI = i;
Thread thread = new Thread(() -> {
sortArr(finalI);
});
waitStartThread.add(thread);
}
for (int i = 0; i < 2; i++) {
waitStartThread.get(i).start();
}
}
private static void sortArr(int sortType) {
// 升序
if (sortType == 0){
Arrays.sort(arrThreadLocal.get());
System.out.println(Thread.currentThread().getName() + Arrays.toString(arrThreadLocal.get()));
}
// 降序
else {
Arrays.sort(arrThreadLocal.get());
int[] sortedArr = arrThreadLocal.get();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < sortedArr.length; i++) {
list.add(sortedArr[i]);
}
Collections.reverse(list);
System.out.println(Thread.currentThread().getName() + list);
}
arrThreadLocal.remove();
}
}