我的问题是关于ExecutorService类的shutdown()
方法。如果我在无限循环中调用submit()
方法...我是否需要调用shutdown()
?基本上我有这样的东西(这里是伪代码):
for(;;){
for(some event){
if(some event does something i want to capture){
threadPool.submit()
}
}
}
因此,如果适合调用shutdown()
,可以使用上述设置吗?在我的实际代码中,当我尝试在无限循环之外调用shutdown()时,我得到无法访问的代码错误 - 我理解。但在我看来,我可能不会调用shutdown()
方法。你们觉得怎么样?
答案 0 :(得分:2)
建议传递 stop 事件类型,指示循环到break
:
boolean have_received_stop_event = false;
while (!have_received_stop_event)
{
for(some event)
{
if(stop-event)
{
have_received_stop_event = true;
break;
}
if(some event does something i want to capture)
{
threadPool.submit()
}
}
}
然后在主循环退出后调用shutdown()
。
答案 1 :(得分:0)
如果有一个包含此无限循环的try-catch块,则可以在catch块中调用shutdown。这将允许您在抛出异常时进行整理。