Я довольно новичок с исполнителями java, так что это, возможно, простой вопрос.Исполнители Распределение задач по потокам
ExecutorService executorService = Executors.newFixedThreadPool(NumberOfThreads - 1);
do_work();
for(int i = 1; i < NumberOfThreads; i++)
{
executorService.execute(new Runnable()
{
public void run()
{
do_work();
}
});
}
Мой вопрос:
Если я создаю фиксированный пул потоков с потоками «N», и если я хочу, чтобы выполнить задачи «N», как приведенный выше код. У меня есть гарантии, что каждый поток выполнит только одну задачу (do_work())?
@dreamcrash: о каких «id» вы говорите? – Holger
Thread.currentThread(). GetId(), но поколения не производятся от 0 (мастер) до N - 1 потоков, как я хочу. – dreamcrash
@dreamcrash: эти номера идентификаторов потоков никогда не указываются, чтобы начинаться с нуля или быть в порядке возрастания. Есть 2⁶³ возможных значений, и они могут быть повторно использованы, когда поток завершается. Создание задач, зависящих от этих идентификационных номеров, обычно является плохой идеей. Поэтому не просите предложений о том, как сделать эту работу с «Исполнителем»; просто измените дизайн. – Holger