ScheduledExecutorService在使用schedule提交定時任務時會返回一個ScheduledFuture<?>,可以調用它的cancel方法。
代碼如下。
import org.junit.Test;
import java.util.concurrent.*;
/**
* Created by fanxian
* datetime on 2017/11/11 16:41.
*/
public class ScheduledExecutorServiceTest {
@Test
public void t1() throws InterruptedException {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
System.out.println("創建5秒延遲的任務");
ScheduledFuture<?> schedule = scheduledExecutorService.schedule(new Runnable() {
@Override
public void run() {
doTask("5s");
}
}, 5, TimeUnit.SECONDS);
Thread.sleep(4900);
schedule.cancel(false);
System.err.println("取消5秒延遲的任務");
System.out.println();
System.out.println("創建3秒延遲的任務");
ScheduledFuture<?> schedule2 = scheduledExecutorService.schedule(new Runnable() {
@Override
public void run() {
doTask("3s");
}
}, 3, TimeUnit.SECONDS);
Thread.sleep(4000);
}
private void doTask(String arg) {
System.out.println(arg + " 任務執行 ");
}
}