gpt4 book ai didi

java - 如何为此类实现 isTimerRunning()

转载 作者:行者123 更新时间:2023-11-30 02:54:51 24 4
gpt4 key购买 nike

我有这段代码,它基本上为我的应用程序提供了一个自定义计时器。

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

import org.apache.log4j.Logger;


public class SMSFirewallTimer {
private static Logger logger = Logger.getLogger(SMSFirewallTimer.class);
Timer timer;
String timerId;

public SMSFirewallTimer(int seconds, String string) {
timer = new Timer();
timerId = string;
logger.debug("SMSFirewallTimer: timer started for: "+seconds +"seconds");
timer.schedule(new Timeout(string), seconds*1000);
}

public void cancelTimer()
{
this.timer.cancel();
logger.debug("SMSFirewallTimer: Cancelling timer for : " + this.timerId);
}

class Timeout extends TimerTask {
private String string;
public Timeout(String string) {
this.string = string;

}
@Override
public void run() {
logger.debug("SMSFirewallTimer: Time's up! for: " + this.string );
timer.cancel(); //Terminate the timer thread
}
}
}

现在问题出现了,我想要 SMSFirewallTimer 中有一个 isRunning() 方法,它会告诉我计时器是否仍在运行,并且它还应该保持记住超时。

如果我只是在此类中将 boolean 值声明为 isTimer ,那么只有使用 cancelTimer() 时它才有效,但它不会知道计时器是否过期,因为它是另一个预定方法new Timeout(string)

最佳答案

TimeoutSMSFirewallTimer 的内部类这意味着 SMSFirewallTimer 的每个实例绑定(bind)到 SMSFirewallTimer 的特定实例即可以访问其字段和方法。

应该足以替换:

        timer.cancel(); //Terminate the timer thread            

        cancelTimer(); //Terminate the timer thread            

run方法Timeout .

关于java - 如何为此类实现 isTimerRunning(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37566227/

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