Вложенное завершение JavaFX ExecutorService - PullRequest
0 голосов
/ 03 июля 2019

Например, если у вас есть ExecutorServic (ES) в JavaFX, который запускает задачу, которая, в свою очередь, содержит другую ES и запускает новые задачи. - Что будет с потоками 2-го ES, когда 1-й ES выключится. Я полагаю, что они не будут закрыты (как если бы я правильно понял, если бы только главный поток был закрыт).

1 Ответ

0 голосов
/ 03 июля 2019

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

Кроме того, вы можете повторно использовать службу исполнителя и его пул потоков, а не создавать новую. Бывают моменты, когда имеет смысл иметь отдельный пул, но вы должны четко понимать свою мотивацию в этом.

Когда вы устанавливаете две или более службы-исполнителя, они и их пулы вспомогательных потоков являются отдельными. Отключение одного не влияет на другое.

Кстати, в некоторых случаях может быть целесообразно иметь задачу в расписании обслуживания запланированного исполнителя, еще одну задачу. Но это также может быть «запах кода», подсказка о плохом дизайне. Вам не предоставлено достаточно подробностей, чтобы сказать, в чем дело, но я предлагаю вам подумать об этом и поискать во многих других существующих сообщениях исполнителей.

...