WorkStealingPool意外退出

时间:2015-12-30 17:33:38

标签: java concurrency

我向ExecutorService提交了一些Runnables。在这些Runnables中,调用wait()和notify()。该代码与newFixedThreadPool一起用作ExecutorService。使用newWorkStealingPool,进程意外退出,没有任何错误消息。

FileInputStream fis = new FileInputStream("E:\\Users\\17496382.WUDIP\\Desktop\\qwert.txt");
FileOutputStream fos = new FileOutputStream("E:\\Users\\17496382.WUDIP\\Desktop\\qwert1.txt");
byte[] buffer = new byte[1024];
int len;
while((len = fis.read()) != -1){   //do this until int len is not -1
System.out.println((char)len);
fos.write(buffer, 0, len);

1 个答案:

答案 0 :(得分:0)

因为Pool是动态分配线程的,所以在runAsThreads退出后没有线程存活,因为它是主线程的结束。至少需要在线程运行时才能使应用程序保持活动状态。需要添加对awaitTermination的调用。固定池不需要它,因为它将始终具有活动线程,直到它被显式关闭,如JavaDocs中所述。