Нужно ли вручную выключать Executor при выходе из приложения? - PullRequest
3 голосов
/ 05 апреля 2011

Предположим, у меня есть Executor executor; где-то в моем приложении.Достаточно ли просто сказать setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); как обычно и позволить «системе» разобраться с этим, или мне нужно зарегистрировать прослушиватель и вручную вызвать executor.shutdown(); до выхода из приложения?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Если это автономное приложение, и вам все равно, что запущенные потоки просто завершаются, вам не стоит об этом беспокоиться.

Если ваш класс работает на виртуальной машине, которая также выполняет другие функции (например, контейнер сервлета, такой как Tomcat), вам необходимо явно закрыть исполнителя, или потоки могут продолжать работать (Tomcat будет кричать на вас и говорить вам, что есть нити, которые он не может убить, и что у тебя течет память).

0 голосов
/ 06 апреля 2011

В зависимости от приложения, когда вы создаете Executor, вы передаете ему ThreadFactory, который создает потоки демона. Это не помешает завершению работы приложения, но также будет случайным образом завершаться.

...