Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / FixedThreadPool vs CachedThreadPool / 3 сообщений из 3, страница 1 из 1
16.02.2017, 19:21
    #39406105
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FixedThreadPool vs CachedThreadPool
Судя по прочитанному и моим экспериментам
FixedThreadpool будет создавать новые потоки до того момента пока лимит тредов не исчерпан, даже если он уже может переиспользовать какой-то старый поток, который своё отработал.
CachedThreadPool будет всегда сначала стараться переиспользовать уже созданные потоки и только если это невозможно, то тогда будет созданный поток. границы количества тредов нет
Собственно вопросы:
1. Можно ли сделать ограниченный CachedThreadPool ?
2. В каких случаях нужно предпочитать FixedThreadpool CachedThreadPool-у ? выглядит, что CachedThreadPool бережнее относится к памяти. Влияет ли это на перформанс?
...
Рейтинг: 0 / 0
16.02.2017, 19:25
    #39406107
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FixedThreadPool vs CachedThreadPool
3. Лениво ли создаются потоки в FixedThreadPool ?
4. Подчищаются ли потоки, если они долго не нужны?
...
Рейтинг: 0 / 0
17.02.2017, 18:25
    #39406858
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FixedThreadPool vs CachedThreadPool
отвечу сам себе:

автор1. Можно ли сделать ограниченный CachedThreadPool ?

Все эти Executors.newXXX используют внутри ThreadPoolExecutor

по умолчанию CachedThreadPool это
Код: java
1.
2.
3.
new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());


меняем на тип очереди на ограниченный, например new ArrayBlockingQueue(2) и получаем ограниченный CachedThreadPool

автор3. Лениво ли создаются потоки в FixedThreadPool ?
По умолчанию - да.
Но можно конфигурнуть при помощи вызова методов:
prestartCoreThread() or prestartAllCoreThreads()

автор4. Подчищаются ли потоки, если они долго не нужны?

при создании пула передаются 2 параметра corePoolSize and MaximumPoolSize а также keepAliveTime.

По умолчанию, если число созданных тредов больше, чем corePoolSize, то потоки, которые бездействуют время, превышающее keepAliveTime будут завершены(но контролируется, чтобы их число не упало меньше, чем corePoolSize)

Но и это можно конфигурить выставляя флаг allowCoreThreadTimeOut.
По умолчанию он true только пока потоков более, чем corePoolSize.

автор2. В каких случаях нужно предпочитать FixedThreadpool CachedThreadPool-у ? выглядит, что CachedThreadPool бережнее относится к памяти. Влияет ли это на перформанс?


Тут похоже так сразу не ответишь, зависит от ситуации.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / FixedThreadPool vs CachedThreadPool / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]