#java
Вопрос:
Например, у меня есть пул потоков из 8 потоков, я хочу, чтобы 4 аналогичные задачи выполнялись потоком 1 в пуле, другие 4 задачи выполнялись потоком 2 в пуле и так далее
Комментарии:
1. Можете ли вы подробнее объяснить, почему так важно, в каком потоке выполняется определенная инструкция?
2. Спасибо за ответ, потому что на основе названия темы я хочу выполнять разные действия.
3. Создайте несколько пулов потоков для каждой группы задач
4. Добавив комментарий @ErwinBolwidt, вы можете использовать одного исполнителя потока для каждой группы задач. Документация гарантирует, что представленные задачи на каждом исполнителе одного потока будут выполняться последовательно. Вы также можете рассмотреть возможность использования
Map<String, ExecutorService>
функции, которая будет сопоставлять пользовательские имена с пулами потоков.5. это означает, что я должен создавать отдельные пулы для групп задач, но другого способа нет ? чтобы выбрать конкретный поток в пуле, когда я отправляю задачи в пул
Ответ №1:
Можно ли выбрать конкретный поток для выполнения аналогичных задач в пуле потоков в java?
Нет. По крайней мере, не используя ни одну из стандартных ExecutorService
реализаций Java SE.
Конечно, вы могли бы реализовать свой собственный пул потоков с нуля, который назначал задачи потокам в пуле любым выбранным вами способом. Это просто много сложного кода для написания, отладки и обслуживания.
Ваша причина, по которой вы этого хотите, кажется мне надуманной. (Это похоже на проблему XY.)
…. потому что на основе имени потока я хочу выполнять разные действия.
Есть и другие способы достижения этой цели:
- Вы можете использовать a
ThreadLocal
для хранения условного имени, и ваши задачи установят его, когда они начнутся. - Ваши задачи могут вызывать
Thread.setName()
текущий поток при запуске 1. - Вы можете просто сохранить условное имя в переменной в объекте вашей задачи.
- Вы можете просто использовать несколько пулов потоков и отправлять их в разные в зависимости от действия, которое вы хотите выполнить.
Обратите внимание, что, планируя определенные задачи для одного именованного потока, вы создадите узкое место для параллелизма для этих задач.
1 — ИМО, этот конкретный вариант воняет …