問題は、Executors.newSingleThreadScheduledExecutor();
実際には を返さないことScheduledThreadPoolExecutor
です。
Executors
クラスのソース コード:
public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}
Delegated...
クラス ( もありますDelegatedExecutorService
) は、すべての呼び出しを基礎となるエグゼキューター (ScheduledThreadPoolExecutor
この場合は ) に渡しているだけです。コード内のコメントは、これらのクラスの全体的なポイントが、基になるエグゼキューターが持つ可能性のあるすべての非インターフェイス メソッドを非表示にすることであることを示唆しています。
いずれにせよ、作業中のオブジェクトのクラス バージョンではなく、インターフェイスを使用することをお勧めします ( and List
notおよび not )。ArrayList
ScheduledExecutorService
ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor
で利用できる機能と で利用できない機能が絶対に必要な場合はScheduledExecutorService
、 のコンストラクタを使用ScheduledThreadPoolExecutor
してそのインスタンスを作成できます。