Ошибка при вызове shutdown()
в исполнителе нитей приведет к тому, что приложение никогда не будет завершено. Лучшая практика, чтобы закрыть ExecutorService это:Почему интерфейс ExecutorService не реализует AutoCloseable?
ExecutorService service = null;
try {
service = Executors.newSingleThreadExecutor();
// Add tasks to thread executor
…
} finally {
if(service != null) service.shutdown();
}
Поскольку Java знает концепцию примерочных с-ресурсами, не будет ли хорошо, если бы мы могли это сделать?
try (service = Executors.newSingleThreadExecutor())
{
// Add tasks to thread executor
…
}
Хороший вопрос, хотя ... эта мысль мне никогда не приходила ;-) – GhostCat
http://www.stackoverflow.com/questions/13883293/turning-an-executorservice-to-daemon-in-java –
Есть тонны «находчивых» API-интерфейсов, отличных от 'Closeable', в JDK –