gpt4 book ai didi

java - 使用 Executor 创建 ScheduledThreadPoolExecutor

转载 作者:行者123 更新时间:2023-12-04 20:41:55 25 4
gpt4 key购买 nike

我非常困惑为什么以下类型转换不起作用:

ScheduledThreadPoolExecutor timeoutControl = (ScheduledThreadPoolExecutor) Executors.newSingleThreadScheduledExecutor();

ScheduledThreadPoolExecutor 实现了 ScheduledExecutorService。如果我不能将它与实际类一起使用,那么这个 Executors 调用的意义何在。

我是不是用错了(可能),有人可以提供一些指导吗?

最佳答案

问题是 Executors.newSingleThreadScheduledExecutor(); 实际上没有返回 ScheduledThreadPoolExecutor

Source codeExecutors 类中:

public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1));
}

Delegated... 类(也有一个 DelegatedExecutorService)只是将所有调用传递给底层执行程序,即 ScheduledThreadPoolExecutor这个案例。代码中的注释表明这些类的全部意义在于隐藏底层执行程序可能具有的所有非接口(interface)方法。

无论如何,最好还是使用接口(interface)而不是您正在处理的对象的类版本(List 而不是 ArrayListScheduledExecutorService 而不是 ScheduledThreadPoolExecutor)。

如果您绝对需要 ScheduledThreadPoolExecutor 而不是 ScheduledExecutorService 中可用的功能,您可以使用 ScheduledThreadPoolExecutor 的构造函数来创建它。

关于java - 使用 Executor 创建 ScheduledThreadPoolExecutor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com