问题是它Executors.newSingleThreadScheduledExecutor();
实际上不返回一个ScheduledThreadPoolExecutor
.
类中的源代码Executors
:
public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}
这些Delegated...
类(也有一个DelegatedExecutorService
)只是将所有调用传递给底层执行程序,ScheduledThreadPoolExecutor
在这种情况下。代码中的注释表明这些类的全部意义在于隐藏底层执行程序可能具有的所有非接口方法。
无论如何,最好还是使用接口而不是您正在处理的对象的类版本(List
而不是ArrayList
,ScheduledExecutorService
而不是ScheduledThreadPoolExecutor
)。
如果您绝对需要在 中ScheduledThreadPoolExecutor
而不是在 中可用的功能ScheduledExecutorService
,您可以使用构造函数ScheduledThreadPoolExecutor
来创建它的实例。