に固定されていると言われています。 私はそれを証明するために単体テストを行いました。
テスト(future.get()メソッドを呼び出すことなく)#1:
@Test
public void testSchedule() throws InterruptedException, ExecutionException {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
System.out.println(new Date());
ScheduledFuture<?> future = executorService.schedule(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getId() + " - " + Thread.currentThread().getName() + " - Executing thread...");
}
}, 5, TimeUnit.SECONDS);
//System.out.println("future : " + future.get());
executorService.shutdown();
System.out.println(new Date());
}
、出力があった:
Thu May 24 10:11:14 BRT 2012
Thu May 24 10:11:14 BRT 2012
テスト#2(呼び出しfuture.get()メソッド)。
@Test
public void testSchedule() throws InterruptedException, ExecutionException {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
System.out.println(new Date());
ScheduledFuture<?> future = executorService.schedule(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getId() + " - " + Thread.currentThread().getName() + " - Executing thread...");
}
}, 5, TimeUnit.SECONDS);
System.out.println("future : " + future.get());
executorService.shutdown();
System.out.println(new Date());
}
そして、出力されました:
Thu May 24 10:12:48 BRT 2012
8 - pool-1-thread-1 - Executing thread...
future : null
Thu May 24 10:12:53 BRT 2012
私はそれがあなたを助けてくれることを願っています!
+1よくできました。私はこれを解決策として提案することを考えていましたが、1つのタスクが(実行カウントのような他のタイプのコントロールなしで)スケジュールに提出された場合にのみ機能するので、私はオプトアウトしました。 –