我有一个实现可调用接口(interface)的类。我想使用ScheduledExecutorService接口(interface)的scheduleAtFixedRate方法为该类安排任务。但是scheduleAtFixedRate需要一个可运行的对象作为可以计划的命令。
因此,我需要一种将可调用对象转换为可运行对象的方法。我尝试了简单的转换,但是没有用。
样本代码:
package org.study.threading.executorDemo;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
class ScheduledExecutionTest implements Callable<String> {
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
System.out.println("inside the call method");
return null;
}
}
public class ScheduledExecution {
public static void main(String[] args) {
ScheduledExecutorService sec = Executors.newScheduledThreadPool(10);
sec.scheduleAtFixedRate(new ScheduledExecutionTest(), 5, 2, TimeUnit.SECONDS);
}
}
最佳答案
FutureTask task1 = new FutureTask(Callable<V> callable)
现在,该task1是可运行的,因为:
class FutureTask<V> implements RunnableFuture<V>
RunnableFuture<V> extends Runnable, Future<V>
因此,从以上两个关系来看,task1是可运行的,可以在
Executor.execute(Runnable)
方法中使用