我有一个每10秒运行一次的类,但是当我不止一次执行它时,会启动多个计时器。如果一个计时器已经运行,我希望忽略其他计时器调用。我只想在给定的时间点运行一个计时器。请帮忙。
我的代码:
import java.util.Timer;
import java.util.TimerTask;
public class Test1 extends TimerTask{
@Override
public void run() {
System.out.println("In run method");
}
public static void main(String args[]) {
System.out.println("In main method");
Timer timer= new Timer();
timer.schedule(new Test1(), 10000,10000);
}
}
答案 0 :(得分:2)
我希望第一个计时器始终运行。其他定时器通话根本不应该被触发。
尝试使用 Singleton patten ,只允许该类的单个实例。
示例代码:
public class Test extends TimerTask {
private static Test instance = new Test();
private Test() {}
public static Test getInstance() {
return instance;
}
@Override
public void run() {
System.out.println("In run method");
}
}
现在,如果您尝试在同一个实例上启动另一个任务,则会导致以下异常:
java.lang.IllegalStateException: Task already scheduled or cancelled
at java.util.Timer.sched(Unknown Source)
at java.util.Timer.schedule(Unknown Source)
答案 1 :(得分:0)
为什么不尝试设置一个bool如果启动一个计时器并且只让其他计时器启动,如果它的真或假,取决于你如何设置它们
喜欢:
bool checkTimer = false;
//Start a Timer and set checkTimer = true
if(checkTimer == true)
{
//Start your other timers here
}
else
{
//Write message that timer is already running
}