我怀疑java.util.concurrent.ExecutorService
是否应在所有任务完成或取消后关闭?java.util.concurrent.ExecutorService应该以java.sql.Connection的形式关闭吗?
我有这样的方法:
public void testProxies() {
// 5 thread
ExecutorService exec = Executors.newFixedThreadPool(5);
try {
while(condition){
exec.execute(new Runnable() {
@Override
public void run() {
//some task
}
});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
exec.shutdown();// should be shutdown here?
}
}
是,使用ExecutorService
的当期的方式吗?
如何重复使用ExecutorService
?
ExecutorService
应该关机还是放手吧?
我不完全同意你的看法。即使执行程序中有任务正在运行,如果调用System.exit(),程序仍然会退出。当执行器不再需要时,也应该调用shutdown方法,并且它不应该接受更多的任务(这并不意味着如果有正在运行的任务,它们将被终止并且你的程序将很好地退出)。 –
@AlexCalugarescu那不是我说的。即使执行程序未关闭,System.exit()也会终止程序,但如果关闭执行程序,则程序可以不需要System.exit()调用就终止。 – assylias
@AlexCalugarescu我同意关机不会取消正在运行的任务(shutdownNow) - 但我并没有暗示这一点。 – assylias