我有一個關於Java中6行爲Java的ScheduledExecutorService.scheduleAtFixedRate()的
上ScheduledExecutorService的該scheduleAtFixedRate()方法的問題[編輯:1.6的Javadoc比1.5更完整。下面參見注釋]
鑑於:
- 的ScheduledExecutorService的是在游泳池
- 固定速率構造具有N = 1級的線程是一個週期的T秒
- 沒有初始延遲
在這種情況下會發生什麼(時間不是絕對的,在實時意義上):
- 在時間T,服務揭開序幕一個Runnable任務,「任務1」
- 在時間2T,TASK1尚未完成,服務計劃解僱
保證做任何服務以下的?
- (a)中在2T,開球一個Runnable任務, 「TASK2」(召回N = 1)
- (b)中的塊,直到任務1完成
- (C)跳過此時間並再次嘗試在3T
- (d)的行爲是未定義
或者其他什麼東西?如果N> 1,答案會改變嗎?
我在看Java 1.5 doc(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate%28java.lang.Runnable, %20long,%20long,%20java.util.concurrent.TimeUnit%29),它沒有答案。在寫這個問題的時候,我沒有仔細查看1.6鏈接。正如你所看到的,1.6的答案很明顯。 – 2012-01-17 00:56:57