Пытаясь понять фиксированные пулы потоков, я создал этот тестовый код, который показал следующие результаты, вопреки тому, что я думал, что он будет делать:
Thread Start: 1
Thread Start: 2
Thread Start: 0
Вот и все.Никаких сообщений «Конец потока» и только 3 темы были запущены.
Я ожидал и хочу, чтобы все 10 задач были выполнены.
ExecutorService exec = Executors.newFixedThreadPool(3);
for (int c = 0; c < 10; c++) {
exec.execute(new TestThread(c));
}
exec.shutdown();
public class TestThread implements Runnable {
private int counter;
public TestThread (int counter) {
this.counter = counter;
}
@Override
public void run() {
System.out.println("Thread Start: " + counter);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread End: " + counter);
}
}