使用newSingleThreadScheduledExecutor安排多个任务

时间:2013-07-11 21:27:00

标签: java multithreading

如果我为ScheduledExecutorService安排了多个任务,但是我确保只有线程来执行所有任务,那么每个任务是否会按顺序执行?

例如:在下面的场景中会发生什么

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

1 个答案:

答案 0 :(得分:3)

来自javadoc:

  

创建一个Executor,它使用一个工作线程来操作   无界队列。 (但请注意,如果此单个线程终止   由于在关机之前执行期间出现故障,新的将会   如果需要执行后续任务,请取代它。)任务是   保证按顺序执行,并且不会超过一个任务   在任何特定时间都要活跃。不同于其他等同物   newFixedThreadPool(1)保证不返回执行者   可重新配置以使用其他线程。

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