ScheduledExecutorService scheduleWithFixedDelay for Callable

时间:2014-07-07 15:09:08

标签: java multithreading concurrency java.util.concurrent

我正在尝试使用Java Concurrency包执行定期操作,我使用以下代码:

ScheduledExecutorService daemon = Executors.newScheduledThreadPool(1);
daemon.scheduleWithFixedDelay(new AddressThread(ParentMap.getSingletonInstance(), dictionary, test),10, 10, TimeUnit.SECONDS);

其中AddressThread是传递的Runnable类型。代码每10秒执行一次run(),它正如我所期望的那样工作。但是,我需要返回一个值,run()不允许我这样做。是否有类似scheduleWithFixedDelay的方法,我可以传递Callable接口而不是Runnable并返回一些东西?如果没有,如果我想返回一个值,我怎么能做上面那样的东西?

2 个答案:

答案 0 :(得分:0)

问题是你想在哪里处理结果。如果您的任务执行一次,您将从返回的ScheduledFuture获得任务的结果(请参阅此处:here

如果您有几个电话,没有人能够区分返回值何时可用。

你可以实现一个监听器并在任务结束时调用它,我们你有一个单独的线程,等待结果可用,处理它然后安排下一次执行。

答案 1 :(得分:0)

我希望阅读这个问题的答案对你有用。

Need help returning object in thread run method