Я заменяю унаследованный пул потоков java данными ThreadPoolExecutor. В устаревшем пуле потоков при запуске создаются 600 сто потоков. Но в ThreadPoolExecutor, используя концепцию основных потоков, максимальных потоков и prestartAllCoreThreads(), количество потоков при запуске может быть ограничено.ThreadPoolExecutor - использовать потоки перед очередью
Теперь
1) Если меньше, чем corePoolSize нити работают, Исполнитель всегда предпочитает добавлять новый поток, а не массового обслуживания. 2) Если corePoolSize или более потоки запущены, Исполнитель всегда предпочитает очередность запроса, а не добавляет новый поток. 3) Если запрос не может быть поставлен в очередь, создается новый поток, если это не будет превышать maximumPoolSize, и в этом случае задача будет отклонена.
1-й сценарий в порядке, но я хочу, когда используются основные потоки, вместо задач, стоящих в очереди (даже в случае ограниченной очереди, скажем, размер 100) и ожидая, что основные потоки будут простаивать или очереди чтобы быть заполненным, новый поток создается из квоты неосновного пула. Как и в режиме реального времени, мое приложение не может стоять в ожидании очереди в очереди.
так что я хочу CoreThreads -> Non-CoreThreads -> Queue вместо CoreThreads -> Queue -> Non-CoreThreads.
Если используются основные потоки, создайте новые потоки, и если размер пула максимален, тогда задача должна идти в очередь и ждать, пока какой-либо поток станет бесплатным.
Теперь одним из способов этого является расширение класса ThreadPoolExecutor и переопределение метода execute, но тогда я должен почти скопировать полный класс. Это грязный способ, о котором я мог думать. Может ли кто-нибудь предложить любой другой способ.
Примечание: Я не могу использовать cachedThreadPool, так как количество потоков должно быть ограничено.
http://www.stackoverflow.com/questions/19528304/how-to-get-the-threadpoolexecutor-to-increase-threads-to-max-before-queueing/19528305#19528305 – Gray
[Найдено, что решение проблемы с проблема !!] [1] [1]: http://stackoverflow.com/questions/19528304/how-to-get-the-threadpoolexecutor-to-increase-threads-to-max-before -queueing/19528305 # 19528305 – Batty