以固定速率调度可调用对象

use*_*138 9 java java.util.concurrent

我有一项任务,我想以固定的速度运行.但是,每次执行后我还需要任务的结果.这是我尝试过的:

任务

class ScheduledWork implements Callable<String>
{
    public String call()
    {
        //do the task and return the result as a String
    }
}
Run Code Online (Sandbox Code Playgroud)

不,我试图使用它ScheduledExecutorService来安排它.事实证明,你不能Callable以固定的速度安排,只有一个Runnable可以这样做.

请指教.

Boh*_*ian 9

使用生产者/消费者模式:让Runnable 其结果放在BlockingQueue上.从队列中获取另一个线程take().

Take是一个阻塞调用(即仅在队列中存在某些内容时返回),因此您可以在结果可用时立即获取结果.

你可以将它与好莱坞模式结合起来,为等待的线程提供一个回调,这样你的代码就会在可用的时候被调用.