我是新来ExecutorService
,不知为什么下面的代码正确打印“10 15”,尽管我只创建一个线程来处理超时?为什么我可以多次调用时间表而无需在单个线程执行器上取消先前的任务?ScheduledExecutorService的一个线程很多任务
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TestExecutorService implements Runnable {
public static ScheduledExecutorService SERVICE = Executors.newSingleThreadScheduledExecutor();
private int delay;
public TestExecutorService(int delay) {
this.delay = delay;
}
public void run() {
System.out.println(delay);
}
public static void main (String[] args) {
SERVICE.schedule(new TestExecutorService(10), 10, TimeUnit.SECONDS);
SERVICE.schedule(new TestExecutorService(15), 15, TimeUnit.SECONDS);
SERVICE.shutdown();
}
}
额外阅读http://code.nomad-labs.com/2011/12/09/mother-fk-the-scheduledexecutorservice/ – cherit