Hea*_*ren 2 executorservice java-8
我通过流传递一组任务,这是一个简化的演示:
ExecutorService executorService = Executors.newCachedThreadPool((r) -> {
Thread thread = new Thread();
thread.setDaemon(true); // even I removed this, it's still not working;
return thread;
});
IntStream.range(0, TASK_COUNT).forEach(i -> {
executorService.submit(() -> {
out.println(i);
return null;
});
});
Run Code Online (Sandbox Code Playgroud)
在提交完所有任务后,我尝试等待所有这些任务完成后使用:
executorService.shutdown();
executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
Run Code Online (Sandbox Code Playgroud)
但输出没有,没有打印出来.
有问题?任何帮助将不胜感激.
一个奇怪的发现是,当使用默认的DefaultThreadFactory时,它正在工作.
ExecutorService executorService = Executors.newCachedThreadPool();
Run Code Online (Sandbox Code Playgroud)
FYI守护程序线程是我已经检查过的原因.为了调试,我故意设置它们.
你忘了将a传递Runnable给Thread构造函数:
ExecutorService executorService = Executors.newCachedThreadPool(r -> {
Thread thread = new Thread(r);
^
thread.setDaemon(false);
return thread;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |