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 に答える