Вот мой следующий код:Почему не FixedThreadPool работает должным образом
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(new Runnable() {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Start"+" "+Thread.currentThread().getName());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("End!"+" "+Thread.currentThread().getName());
}
}
});
executor.shutdown();
executor.awaitTermination(1, TimeUnit.SECONDS);
Вот мой результат:
Start pool-1-thread-1
End! pool-1-thread-1
Start pool-1-thread-1
End! pool-1-thread-1
Start pool-1-thread-1
End! pool-1-thread-1
Start pool-1-thread-1
End! pool-1-thread-1
Start pool-1-thread-1
End! pool-1-thread-1
Я понимаю, что в моем коде там уже 5
нитей в FixedThreadPool
. Поэтому, когда я запускаю свой код, он должен выводить все потоки 5
, не так ли? Или я что-то не понимаю?
В моем выходе thread-1
начинается и заканчивается каждый раз, но не предполагается ли выводить все 5
нитей при его петлях в for
loop? Причина, если только 1 thread
делает task
, тогда зачем нам нужно 5 threads
? Есть ли способ все 5
нити может выводить на консоль? (Я новичок)
Вы отправили одну задачу. Почему вы ожидаете, что он будет запущен на 5 потоках? –
Я новичок, и да, я получил его сейчас. Спасибо. –