亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ScheduledExecutorService 將一個定時任務延遲

ScheduledExecutorService 將一個定時任務延遲

慕尼黑8549860 2019-02-26 08:33:20
使用ScheduledExecutorService和一個實現了Runnable接口的類來生成了一個定時任務,比如該任務5分鐘后執行?,F在想要延遲這個定時任務的執行,比如5分鐘后不想這個定時任務執行了,想要再推遲3分鐘執行,請問具體應該如何實現?
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

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 + " 任務執行 ");
    }
}
查看完整回答
反對 回復 2019-03-01
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

以JavaScript為例:

function doTask() {
   ...
}

setTimeout(function() {
    if (canDoTask) {
        doTask();
    } else {
        setTimeout(doTask, 180000);
    }
}, 300000);
查看完整回答
反對 回復 2019-03-01
  • 2 回答
  • 0 關注
  • 1164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號