java - 如何在java中使用ScheduledExecutorService以固定间隔调用Callable实现?

标签 java

ScheduledExecutorService 具有 scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit) 等方法以固定间隔调用 Runnable 类。我希望我的线程在执行后返回一些值。所以我实现了 Callable 接口(interface)。我找不到定期调用我的 Callable 类的等效方法。还有其他方法可以实现吗?如果 Java 不提供此功能,那么该决定背后的理由是什么?请告诉我。谢谢。

最佳答案

您不能安排 Callable 定期执行,因为不清楚如何从这样的执行中返回结果。

如果您有自己的方法来返回结果(例如,将结果放入队列),您可以将 Callable 包装到 Runnable 中并实现您的方法:

final BlockingQueue<Result> q = new ArrayBlockingQueue<Result>();
final Callable<Result> action = ...;

s.scheduleAtFixedRate(new Runnable() {
    public void run() {
        q.put(action.call());
    }
}, ...);

关于java - 如何在java中使用ScheduledExecutorService以固定间隔调用Callable实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102519/

相关文章:

java - 正则表达式查找字符串中数字的实例

java - 我们应该使用常量作为描述性变量名来初始化某些字段的默认值吗?

java - 如何阻止 intellij 转换我的代码?

java - 如何用java从客户端系统读取文件?我必须使用 wsdl 吗?

java - Java 中什么时候应该使用同步方法,什么时候应该使用同步块(synchronized block)?

java.lang.UnsatisfiedLinkError : no xuggle-xuggler in java. 库路径

java - 子构造函数似乎在没有我调用的情况下调用了父构造函数

java - RabbitMq 错误 - 连接被拒绝 : connect

java - XWalkView如何设置滤色器?

java - 无法向 SMTP 主机发送电子邮件