看代码
//不要在意这里的细节
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
List<Integer> list = new ArrayList<>();
List<Future> futures = new ArrayList<>();
for(int i = 0; i < 3; i++) {
Future<String> future = threadPoolTaskExecutor.submit(new Callable<String>() {
@Override
public String call() throws Exception {
for (int j = 0; j < 2; j++) {
Thread.sleep(1000);
list.add(j);
}
return "0";
}
});
futures.add(future);
}
for(Future future : futures){
System.out.println();
}
System.out.println("------");
System.out.println(list.toString()); //list不稳定
我开了3个线程,但是list中的元素却不稳定;
原因:ArrayList是线程不安全的,换一个线程安全的就可以了,推荐这种情况下最好使用返回值进行操作。