在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ ScheduledExecutorService 將一個定時任務(wù)延遲

ScheduledExecutorService 將一個定時任務(wù)延遲

使用ScheduledExecutorService和一個實(shí)現(xiàn)了Runnable接口的類來生成了一個定時任務(wù),比如該任務(wù)5分鐘后執(zhí)行。現(xiàn)在想要延遲這個定時任務(wù)的執(zhí)行,比如5分鐘后不想這個定時任務(wù)執(zhí)行了,想要再推遲3分鐘執(zhí)行,請問具體應(yīng)該如何實(shí)現(xiàn)?

回答
編輯回答
墻頭草

ScheduledExecutorService在使用schedule提交定時任務(wù)時會返回一個ScheduledFuture<?>,可以調(diào)用它的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("創(chuàng)建5秒延遲的任務(wù)");
        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秒延遲的任務(wù)");

        System.out.println();

        System.out.println("創(chuàng)建3秒延遲的任務(wù)");
        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 + " 任務(wù)執(zhí)行 ");
    }
}
2017年5月17日 15:11
編輯回答
維她命

以JavaScript為例:

function doTask() {
   ...
}

setTimeout(function() {
    if (canDoTask) {
        doTask();
    } else {
        setTimeout(doTask, 180000);
    }
}, 300000);
2018年3月21日 16:29