当发生异常时,我在我的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. 有没有办法知道电子邮件是否用C#成功转发?
- 2. 有没有办法知道手机是否有通话?
- 3. 有没有办法知道是否已经创建了IWin32Window?
- 4. 有没有办法知道Data Saver是否启用?
- 5. 有没有办法知道异常是否被禁用?
- 6. 有没有办法知道用户是否打开邮件?
- 7. 有没有办法知道rxjs websocket是否打开
- 8. 有没有办法知道Flash Player是否安装了SWFObject?
- 9. 有没有办法检查下一个令牌是否结束?
- 10. 如何知道cmake项目代是否成功结束
- 11. 有没有办法让webpack知道全局是否没有声明?
- 12. 有没有办法知道nodeunit已经完成所有测试?
- 13. 有没有办法检测Facebook Javascript SDK是否成功加载?
- 14. 有没有办法检查打印过程是否成功?
- 15. iOS:有没有办法知道用户是否选择了退出通知?
- 16. 有没有办法知道一个对象的C#方法是否被调用?
- 17. 有没有办法知道谁是“setNeedsDisplay”的发件人?
- 18. 有没有办法让linqpad知道一个字段是主键?
- 19. 有没有办法了解工作<Void>是否成功完成?
- 20. 有没有办法知道一个实体是否由NHibernate管理?
- 21. 有没有办法知道TCP套接字是否由TCPEventBusBridge关闭
- 22. 有没有办法知道用户是否喜欢Facebook上的对象?
- 23. 有没有办法知道函数是否返回到PHP中的变量?
- 24. 如何知道所有$ http呼叫是否结束 - AngularJS
- 25. 有没有办法知道自定义通知即将显示?
- 26. 有没有办法检测通知栏是否已被清除?
- 27. 有没有办法知道调用方法?
- 28. 如何知道是否有任何AJAX请求和Ajax成功
- 29. 如何知道查询是否成功?
- 30. 我如何知道Rabbitmq是否成功?