我阅读的手册中包含此示例,其中正在创建ScheduledExecutorService
。但是,API显示ScheduledExecutorService
是一个接口,而不是一个类。那它怎么可能被实例化呢?
以下是示例代码:
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledFuture;
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAMinute() {
final Runnable beeper = new Runnable() {
public void run() {
System.out.println("beep");
}
};
final ScheduledFuture<?> future =
scheduler.scheduleAtFixedRate(beeper, 250, 250, MILLISECONDS);
scheduler.schedule(
new Runnable() {
public void run(){
future.cancel(true);
}
}, 3, SECONDS );
while (!future.isDone()) {
try {
Thread.sleep(10);
} catch(InterruptedException e) {}
}
scheduler.shutdown();
}
public static void main(String[] args)
{
BeeperControl bc = new
BeeperControl();
bc.beepForAMinute();
}
}
答案 0 :(得分:1)
Executors.newSceduledThreadPool(int)是一个工厂方法,它返回一个实现ScheduledExecutorService
接口的类。
编辑:
根据GrepCode:
public static ScheduledExecutorService newScheduledThreadPool(
int corePoolSize, ThreadFactory threadFactory) {
return new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);
}
所以这里它返回实现ScheduledThreadPoolExecutor
接口的ScheduledExecutorService
的新实例。