Как долго я могу оставить пул потоков без задач, прежде чем он завершится в Android?

Я новичок в использовании ThreadPools для выполнения многопоточности в моем приложении для Android. В прошлом я создавал новые потоки для выполнения сетевых запросов, запросов к базе данных и интенсивных алгоритмов. Согласно этому сообщению новый поток (задача).start() VS ThreadPoolExecutor. submit(task) в Android , лучше использовать пул потоков.

Когда я перепроектировал свою программу для использования ThreadpoolExecutor, вопрос, на который я изо всех сил пытался ответить, звучит так: «Что произойдет с моим threadPool, если какое-то время ему не будут отправляться задачи?» Например, предположим, что я создаю приложение, которое извлекает информацию с сервера и отображает ее пользователю. Пользователь также может обновить отображаемую информацию, получив обновленный набор данных с сервера. Пользователь может обновить информацию в любое удобное для него время. Между обновлениями может пройти несколько часов.

Этого можно добиться с помощью новых потоков, однако каждый раз, когда конечный пользователь обновляет данные, для потока должна выделяться новая память. Что я надеюсь сделать, так это использовать threadPool, чтобы я мог запускать сетевые вызовы без необходимости каждый раз выделять память. Однако это построено на двух предположениях. Во-первых, я могу оставить пул потоков в покое на неопределенное время и по-прежнему иметь возможность его использовать. Во-вторых, этот подход к использованию модели потоков соответствует хорошей практике. Предполагая, что второе верно, как долго я могу оставлять пул потоков без задач для выполнения, прежде чем он отключится или завершится по собственному желанию, если он это сделает?


person wolfaviators    schedule 20.05.2015    source источник


Ответы (1)


Я считаю, что он просто остается доступным на протяжении всего срока службы приложения, если вы явно не вызываете «shutdown()» в пуле потоков.

person Eric    schedule 21.05.2015