2015-02-10 4 views
0

У меня есть приложение, которое имеет 3 потока, которые я собираюсь переключить для управления ScheduledExecutorService. Создавая экземпляр этого, вы должны указать размер пула потоков, но что это? Означает ли это, что если я планирую запустить 3 задачи, я должен создать размер пула потоков по 3 для каждого?Размер пула потоков Java (Executors)

+0

как вы создаете что ScheduledExecutorService? –

+0

Исполнитель ScheduledExecutorService = Executors.newScheduledThreadPool (3); executor.scheduleAtFixedRate (task1, 0, period, TimeUnit.MILLISECONDS); – user3469157

ответ

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