2013-07-11 2 views
1

Если я планирую несколько задач для ScheduledExecutorService, но я удостоверился, что может быть только поток для выполнения всех задач, будет ли каждая задача выполняться последовательно?планирование многоуровневых задач с помощью newSingleThreadScheduledExecutor

Для, например: что происходит в сценарии ниже

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); 
scheduler.scheduleWithFixedDelay(new Runnable{void run(){....}}, 6000,6000,TimeUnit.MILLISECONDS); 
scheduler.scheduleWithFixedDelay(new Runnable{void run(){....}}, 6000,6000,TimeUnit.MILLISECONDS); 

ответ

3

Из Javadoc:

Создает Исполнитель, который использует один рабочий поток, работающий от с неограниченной очереди. (Обратите внимание, что если этот единственный поток завершает из-за сбоя во время выполнения до выключения, новый будет займет свое место, если потребуется для выполнения последующих задач.) Задачи гарантируют выполнение последовательно и не более одна задача будет быть активной в любой момент времени. В отличие от эквивалентного в противном случае newFixedThreadPool (1) возвращенный исполнитель гарантированно не будет реконфигурируемый для использования дополнительных потоков.

http://download.java.net/jdk7/archive/b123/docs/api/java/util/concurrent/Executors.html#newSingleThreadExecutor(java.util.concurrent.ThreadFactory)

Смежные вопросы