ScheduledExecutorService具有scheduleAtFixedRate(Runnable命令,long initialDelay,long period,TimeUnit单元)等方法,可以固定的时间间隔调用Runnable类.我希望我的Thread在执行后返回一些值.所以我实现了Callable接口.我找不到一个等效的方法来定期调用我的Callable类.有没有其他方法来实现这个?如果这不是Java提供的功能,那么该决定背后的理性是什么?请告诉我.谢谢.
axt*_*avt 12
您无法安排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());
}
}, ...);
Run Code Online (Sandbox Code Playgroud)