У меня есть приложение, которое имеет 3 потока, которые я собираюсь переключить для управления ScheduledExecutorService. Создавая экземпляр этого, вы должны указать размер пула потоков, но что это? Означает ли это, что если я планирую запустить 3 задачи, я должен создать размер пула потоков по 3 для каждого?Размер пула потоков Java (Executors)
0
A
ответ
0
Предполагая, что вы создали ScheduledExecutorService как этот
ScheduledExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Asynchronous task");
}
});
executorService.shutdown();
Теперь то, что происходит здесь:
- Сначала ExecutorService создается с помощью фабричного метода
newFixedThreadPool()
. Это создает пул потоков с выполнением задач10 threads
. - Во-вторых, анонимная реализация интерфейса Runnable - , переданная методу execute(). Это приводит к тому, что Runnable будет , выполненным одним из потоков в ExecutorService.
Пулы потоков управлять пулом рабочих потоков.
thread pools
содержит рабочую очередь, в которой хранятся задачи, ожидающие выполнения.
Теперь Приходя к:
Означает ли это, если я планирую работает 3 задачи я должен создать нить размер пула 3 по одному для каждого из них?
Да, так что все 3 задачи могут выполняться параллельно.
Теперь здесь хорошая статья о How big should our thread pool be?
+0
Это большое спасибо! – user3469157
как вы создаете что ScheduledExecutorService? –
Исполнитель ScheduledExecutorService = Executors.newScheduledThreadPool (3); executor.scheduleAtFixedRate (task1, 0, period, TimeUnit.MILLISECONDS); – user3469157