我觉得我的Java并发知识越来越生疏,我试图找出为什么线程池不会在下面的代码接受更多的任务:线程池不接受新的任务
ExecutorService e = Executors.newFixedThreadPool(aNumber);
// Task 1
for (int i=0; i<n; i++)
e.submit(new aRunnable());
while (!e.isTerminated());
System.out.println("Task 1 done");
// Task 2
for (int i=0; i<n; i++)
e.submit(new anotherRunnable());
while (!e.isTerminated());
System.out.println("Task 2 done");
它从来没有启动任务2,当任务1中的最后一个任务运行时,线程“冻结”,就像它正在等待其他任务完成一样。
怎么了?
推荐阅读:http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ – JVMATL