簡體   English   中英

覆蓋預定任務

[英]Overwriting a scheduled task

除非被新的計划任務覆蓋,否則x秒后如何執行任務?

場景是,我想在用戶完成我的JTextField鍵入后1秒執行任務。 為此,我需要安排任務,並在每次“文檔”更改時重新安排任務。

我嘗試使用ScheduledExecutorService ,但是計划只是將任務添加到列表中,而不是取消上一個任務。

這是我想去的地方:

class TextChangeListener implements DocumentListener {
    private final ??? updater = new ???();

    @Override
    public void changedUpdate(DocumentEvent arg0) {}

    @Override
    public void insertUpdate(DocumentEvent arg0) {
        update();
    }

    @Override
    public void removeUpdate(DocumentEvent arg0) {
        update();
    }

    private void update() {
        // Wait for the user to finish typing first
        updater.schedule(new Runnable() {
            @Override
            public void run() {
                doSomeStuff();
            }
        }, 1, TimeUnit.SECONDS);
    }
}

我認為您的ScheduledExecutorService步入正軌-您只需要保持Future返回即可。 查看cancel方法。 我假設您正在使用schedule方法。

所以基本上你想做類似的事情

if (future != null) {
    future.cancel();
}
future = // do scheduling code with ScheduledExecutorService 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM