Ich habe diesen Code, der im Grunde einen benutzerdefinierten Timer für meine Anwendung bietet.Wie implementieren isTimerRunning() für diese Klasse
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
}
}
}
Nun stellt sich das Problem, dass ich eine isRunning()
Methode in SMSFirewallTimer
wollen, die mir sagen, dass, wenn der Timer noch läuft oder nicht, und es sollte auch Timeout im Auge behalten.
Wenn ich in dieser Klasse nur eine boolean als isTimer
erklären es hält nur gut, wenn wir cancelTimer()
verwenden, aber es wird nicht kommen, zu wissen, wenn Timer abgelaufen ist, wie seine anderen geplanten Verfahren new Timeout(string)
.
Es funktioniert gut, danke .... – piyushj