当发生异常时,我在我的ExecutorService上调用shutdownNow()。我认为isTerminated()会给我成功的状态,当所有线程结束时都是true,否则为false。但无论如何,我总是会变得真实。任何建议?有没有办法知道ExecutorService是否成功结束?
2
A
回答
1
shutdownNow()
将停止正在等待任务。如果你想在目前等待的线程来执行,然后尝试使用它shutdown()
的javadoc: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html#shutdown()
1
我怀疑isTerminated()始终返回true,因为你在呼唤shutdownNow()
而不是shutdown()
和,按照API文档shutdownNow()
:
...典型的实现将通过主题取消。中断()
因此,它听起来像你的任务都立即响应中断尝试,导致他们立即完成。
0
由于文档说,“isTerminated
是不正确的,除非关闭或shutdownNow时最初被称为”。所以它只会告诉我们任务是否结束,而不是它们是否成功。您可以拥有一个标志,如AtomicBoolean
,并在成功完成之前切换其状态。通过这种方式,您可以使用ExecutorService
的方法来检查任务是否完成,并检查标志是否成功完成。
相关问题
- 1. 有没有办法知道timerTask是否已完成?
- 2. 有没有办法知道电子邮件是否用C#成功转发?
- 3. 有没有办法知道文件名是否是Excel格式?
- 4. iPhone - 有没有办法知道引用是否(仍然)有效?
- 5. 有没有办法知道手机是否有通话?
- 6. 有没有办法知道一行是否更新?
- 7. 有没有办法知道用户是否发送了短信?
- 8. 有没有办法知道Flash Player是否安装了SWFObject?
- 9. 有没有办法知道Data Saver是否启用?
- 10. 有没有办法知道rxjs websocket是否打开
- 11. 有没有办法知道异常是否被禁用?
- 12. 有没有办法知道用户是否打开邮件?
- 13. 有没有办法知道HttpResponse是否在Https中?
- 14. 有没有办法知道是否已经创建了IWin32Window?
- 15. 有没有办法知道$ http请求是否超时?
- 16. 有没有办法检查下一个令牌是否结束?
- 17. 如何知道cmake项目代是否成功结束
- 18. 有没有办法让webpack知道全局是否没有声明?
- 19. 有没有办法检测Facebook Javascript SDK是否成功加载?
- 20. 有没有办法检查打印过程是否成功?
- 21. 有没有办法知道nodeunit已经完成所有测试?
- 22. iOS:有没有办法知道用户是否选择了退出通知?
- 23. 有没有办法知道SD卡上的目录是否有任何图像?
- 24. 有没有办法知道一个对象的C#方法是否被调用?
- 25. 有什么办法可以知道报告是否有订阅
- 26. 有没有办法知道激活的QAction是什么?
- 27. 有没有办法让linqpad知道一个字段是主键?
- 28. 有没有办法知道导航器是全屏(F11)
- 29. 有没有办法知道谁是“setNeedsDisplay”的发件人?
- 30. 有没有办法知道返回的对象是什么?