3

如果我为 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);
4

1 回答 1

4

从javadoc:

创建一个使用单个工作线程在无界队列上运行的 Executor。(但请注意,如果该单线程在关闭前的执行过程中因失败而终止,如果需要执行后续任务,则新的线程将取代它。)任务保证按顺序执行,并且不会有超过一个任务处于活动状态在任何给定时间。与其他等效的 newFixedThreadPool(1) 不同,返回的执行程序保证不可重新配置以使用额外的线程。

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

于 2013-07-11T21:36:07.447 回答