Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по ThreadPoolExecutor / 7 сообщений из 7, страница 1 из 1
06.06.2014, 14:17
    #38663605
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
На самом деле даже 2 вопроса:
1. Правильно ли я понимаю логику его работы? Я отдаю на выполнение N задач, при этом corePoolSize == maximumPoolSize && N > corePoolSize. При этом так получается, что все из этих N задач выполняются неоправданно долго и время выполнения каждой начинает превышать keepAliveTime. Означает ли это, что N - maximumPoolSize будут выкинуты из очереди на выполнение?
2. Если я правильно понимаю п.1, то можно ли как отловить эти "выкинутые" задачи?
...
Рейтинг: 0 / 0
06.06.2014, 15:22
    #38663736
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
just_vladimirОзначает ли это, что N - maximumPoolSize будут выкинуты из очереди наНет, все задачи будут выполнены. Если в пуле 5 потоков, а задач 7, то начнут выполнятся какие-то 5 задач из 7ми теми 5ю потоками (2 оставшиеся задачи ожидают свободного потока). Как только одна из этих задач завершается, поток, поток её исполнявший, освобождается и береёт на выполенение задачу из ожидания
...
Рейтинг: 0 / 0
06.06.2014, 15:31
    #38663752
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
For All,
а что означает keepAliveTime? Видимо я не до конца понимаю, что означает javadoc:
javadockeepAliveTime when the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
...
Рейтинг: 0 / 0
06.06.2014, 15:38
    #38663768
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
just_vladimirFor All,
а что означает keepAliveTime? Видимо я не до конца понимаю, что означает javadoc:
Как вы сами процитировали javadoc - the maximum time that excess idle threads will wait for new tasks before terminating.
В предыдущем примере 5 потоков и 7 задач. Рано или поздно все задачи будут выполнены, и все 5 потоков будут ожидать новой задачи (а её нет) - находиться в состоянии idle . Если новая задача не появится раньше, чем закончится таймаут kepAliveTime, то поток завершается.
...
Рейтинг: 0 / 0
06.06.2014, 15:53
    #38663796
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
For All,
Спасибо! Еще раз, для закрепления, верно ли я понял, чтоkeepAliveTime это время жизни только для idle потоков? При этом ни на занятые какой либо задачей потоки, ни на ожидающие в очереди потоки влияния не оказывает?
...
Рейтинг: 0 / 0
06.06.2014, 15:54
    #38663799
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
Читать как:
just_vladimirожидающие в очереди потокизадачи влияния не оказывает?
...
Рейтинг: 0 / 0
06.06.2014, 16:10
    #38663835
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ThreadPoolExecutor
Да, только idle потоки. Все засабмиченные задачи всегда выполняются (только если она не будет удалена явно, или пулу сделать shutdown)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по ThreadPoolExecutor / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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