是否可以从单独的 class 中停止定时器?
Is it possible to stop a Timer from a separate class?
我正在尝试重置计时器以避免它有多个实例。为此,我想从单独的 class 中停止计时器,如下所示:
public void Timer()
{
Timer timer = new Timer();
long interval = (1000) ;
timer.schedule( new TimerTask()
{
public void run()
{
// code //
}
}, 0, interval);
}
public void Stop()
{
// stop Timer //
}
我觉得这可以通过终止 Timer() 来实现;如果无法停止 Timer,我将非常感谢向我展示如何尽可能干净地终止 class。谢谢。
Newtimer.java
public class NewTimer{
public Timer timer;
public long interval;
public NewTimer(){
if(instance == null){
timer = new Timer();
interval = (1000);
}
}
public void start()
{
timer.schedule( new TimerTask()
{
public void run()
{
// code //
}
}, 0, interval);
}
public void Stop()
{
// stop Timer //
}
另一方class,你能得到这个对象class。
NewTimer newTimer = new NewTimer();
//Start timer
newTimer.start();
if(newTimer != null){
//reinitialize
}
检查是否存在计时器 class的实例。如果是这样,您可以重新初始化它。
我设计了一个非常基本的解决方案:
boolean stop;
public void Timer()
{
Timer timer = new Timer();
long interval = (1000) ;
timer.schedule( new TimerTask()
{
public void run()
{
if condition is met{
execute
}
else if(stop == true){
timer.cancel();
}
}
}, 0, interval);
}
.
.
.
stop = true;
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
stop = false;
Timer1();
基本上,布尔值会停止计时器,给它 2 秒以确保没有重叠,然后设置回 false 以安全地重置计时器。
我正在尝试重置计时器以避免它有多个实例。为此,我想从单独的 class 中停止计时器,如下所示:
public void Timer()
{
Timer timer = new Timer();
long interval = (1000) ;
timer.schedule( new TimerTask()
{
public void run()
{
// code //
}
}, 0, interval);
}
public void Stop()
{
// stop Timer //
}
我觉得这可以通过终止 Timer() 来实现;如果无法停止 Timer,我将非常感谢向我展示如何尽可能干净地终止 class。谢谢。
Newtimer.java
public class NewTimer{
public Timer timer;
public long interval;
public NewTimer(){
if(instance == null){
timer = new Timer();
interval = (1000);
}
}
public void start()
{
timer.schedule( new TimerTask()
{
public void run()
{
// code //
}
}, 0, interval);
}
public void Stop()
{
// stop Timer //
}
另一方class,你能得到这个对象class。
NewTimer newTimer = new NewTimer();
//Start timer
newTimer.start();
if(newTimer != null){
//reinitialize
}
检查是否存在计时器 class的实例。如果是这样,您可以重新初始化它。
我设计了一个非常基本的解决方案:
boolean stop;
public void Timer()
{
Timer timer = new Timer();
long interval = (1000) ;
timer.schedule( new TimerTask()
{
public void run()
{
if condition is met{
execute
}
else if(stop == true){
timer.cancel();
}
}
}, 0, interval);
}
.
.
.
stop = true;
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
stop = false;
Timer1();
基本上,布尔值会停止计时器,给它 2 秒以确保没有重叠,然后设置回 false 以安全地重置计时器。