問題是Executors.newSingleThreadScheduledExecutor();
實際上並沒有返回ScheduledThreadPoolExecutor
。
Source code在Executors
類:
public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}
的Delegated...
類(有一個DelegatedExecutorService
太)只是過客所有調用底層的執行者,在ScheduledThreadPoolExecutor
在這種情況下。代碼中的註釋表明這些類的全部要點是隱藏底層執行程序可能具有的所有非接口方法。
在任何情況下,它是更好的做法無論如何要使用的接口,而不是你正在工作(List
而不是ArrayList
,ScheduledExecutorService
而不是ScheduledThreadPoolExecutor
)的對象的類版本。
如果您絕對需要ScheduledThreadPoolExecutor
中的功能而不是ScheduledExecutorService
,則可以使用ScheduledThreadPoolExecutor
的構造函數創建它的一個實例。
太棒了,我看到我以錯誤的方式去做,謝謝!經過一番思考,我明白了爲什麼。 – Constantin 2012-04-17 22:56:51