gpt4 book ai didi

Java TimerTask 取消不起作用

转载 作者:行者123 更新时间:2023-12-02 01:57:47 26 4
gpt4 key购买 nike

尝试使用 ScheduledExecutorService 来执行 TimerTask。安排一个延迟 10 秒的任务,并调用 task.cancel。但任务仍在运行,不确定会发生什么,并且取消方法似乎没有执行任何取消操作。请帮忙。

package xxx.xxx;

import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Tester {

static class OrderWaveTask extends TimerTask{
public void run() {
System.out.println("hi");
}
}

public static void main(String[] args) {

ScheduledExecutorService orderWaveTP = Executors.newScheduledThreadPool(3);
TimerTask task = new Tester.OrderWaveTask();
orderWaveTP.schedule(task, 10, TimeUnit.SECONDS);
System.out.println("cancelling task: "+ task.cancel());
}

}

最佳答案

您应该使用 ScheduledFuture 取消任务。将您的代码更改为以下内容应该可以使其工作。

ScheduledFuture<?> future = orderWaveTP.schedule(task, 10, TimeUnit.SECONDS);
System.out.println("cancelling task: "+ future.cancel(false));

关于Java TimerTask 取消不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52080915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com