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/