Я читал об этом совсем немного в последние пару часов, и я просто не вижу никаких оснований ( действительна причина) для вызова shutdown()
на ExecutorService
, если мы не будем иметь Humongous приложение , которое хранит, десятки и десятки различных услуг ИСПОЛНИТЕЛЬ, которые не используются для долго.
Единственное (из того, что я понял) завершение работы - это делать то, что делает обычный поток после завершения. Когда обычный поток завершит выполнение метода Runnable (или Callable), он будет передан в сборку мусора для сбора. С Executor Service потоки будут просто приостановлены, они не будут отмечены для сборки мусора. Для этого нужно отключение.
Хорошо, вернемся к моему вопросу. Есть ли причина вызывать выключение ExecutorService
очень часто или даже сразу после отправки ему некоторых задач? Я хотел бы оставить случай, когда кто-то это делает, и сразу после этого звонит, awaitTermination()
когда это подтверждается. Как только мы это сделаем, нам придется заново воссоздавать новое ExecutorService
, чтобы сделать то же самое. Разве не идея ExecutorService
повторного использования потоков? Так зачем уничтожать ExecutorService
так быстро?
Разве это не рациональный способ просто создать ExecutorService
(или объединить, в зависимости от того, сколько вам нужно), затем во время работы приложения передать им задачи, как только они появятся, а затем при выходе из приложения или на некоторых других важных этапах выключить эти исполнители ?
Я хотел бы получить ответ от опытных программистов, которые пишут много асинхронного кода с помощью ExecutorServices.
Второй побочный вопрос, немного поменьше, касается платформы Android. ЕСЛИ некоторые из вас скажут, что отключать исполнителей каждый раз - не лучшая идея, и вы программируете на Android, не могли бы вы рассказать мне, как вы справляетесь с этими отключениями (чтобы быть конкретными - когда вы их выполняете), когда мы имеем дело с различными событиями жизненный цикл приложения.
Из-за комментария CommonsWare я сделал сообщение нейтральным. Мне действительно неинтересно спорить об этом до смерти, и, похоже, это ведет к этому. Мне интересно узнать о том, о чем я здесь просил, опытных разработчиков, только если они готовы поделиться своим опытом. Благодарю.