gpt4 book ai didi

java - Timer 和 TimerTask - 如何从 TimerTask 运行中重新安排 Timer

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:52 26 4
gpt4 key购买 nike

基本上我想做的是制作一个计时器,它在 x 秒后运行一个特定的 TimerTask,但是 TimerTask 可以重新安排计时器在 y 秒后执行任务。下面是示例,它在我尝试在 TimerTask 运行中安排此任务的行中给出错误“线程“Timer-0”java.lang.IllegalStateException 中的异常:任务已安排或取消”。

import java.util.Timer;
import java.util.TimerTask;

public class JavaReminder {

public JavaReminder(int seconds) {
Timer timer = new Timer();
timer.schedule(new RemindTask(timer, seconds), seconds*2000);
}

class RemindTask extends TimerTask {
Timer timer;
int seconds;
RemindTask(Timer currentTimer, int sec){
timer = currentTimer;
seconds = sec;
}

@Override
public void run() {
System.out.println("ReminderTask is completed by Java timer");
timer = new Timer();
timer.schedule(this, seconds*200);
System.out.println("scheduled");
}
}

public static void main(String args[]) {
System.out.println("Java timer is about to start");
JavaReminder reminderBeep = new JavaReminder(2);
System.out.println("Remindertask is scheduled with Java timer.");
}
}

最佳答案

使用新的 RemindTask 而不是现有的。

应该是

timer.schedule(new RemindTask(timer, seconds), seconds*200);

代替

timer.schedule(this, seconds*200);

关于java - Timer 和 TimerTask - 如何从 TimerTask 运行中重新安排 Timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001052/

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