Thread
, Runnable
또는 Timer
과 같이 외부에서 조건을 모니터링해야합니다. 그런 다음 필요에 따라 외부 모니터에서 타이머를 중지, 취소, 다시 할당하십시오. 여기
은
TimerTask
입니다 :
public class OurTask extends TimerTask {
@Override
public void run() {
// Do something
}
}
을 그리고 여기에 모니터의 :
연습에
Monitor
또한 외부에서 취소 얻을 수 있어야하는 것으로
public Monitor implements Runnable() {
private Timer mTimerToMonitor;
public Monitor(Timer timerToMonitor) {
this.mTimerToMonitor = timerToMonitor;
}
@Override
public void run() {
while (true) {
if (!flag) {
// Cancel the timer and start a new
this.mTimerToMonitor.cancel();
this.mTimerToMonitor = new Timer();
this.mTimerToMonitor.schedule(...);
}
// Wait a second
Thread.sleep(1000);
}
}
}
, 현재는 무한히 실행 .
는 그리고 이것은 당신이 그것을 호출 할 수있는 방법입니다 :
Timer timer = new Timer();
timer.schedule(new OurTask(), ...);
Thread monitorThread = new Thread(new Monitor(timer));
monitorThread.start();
가 대신 Runnable
, Timer
및 Thread
를 사용하는이 새로운 자바 8 물건으로 살펴 본다 가치가있을 수 있습니다, 특히 인터페이스 Future과 그것을 구현하는 클래스.
일부 코드 게시 도움이 될 것입니다 – Kovalainen
'타이머'를 하나만 사용하고 '스레드', '실행 가능'또는 다른 '타이머'와 같은 외부 조건을 모니터링해야합니다. 그런 다음 필요에 따라 외부 모니터에서 타이머를 중지, 취소, 다시 할당하십시오. – Zabuza