2013-05-18 2 views
0

나는 20 초마다 새로운 메시지를 검사하는 루프가있는 자바 프로그램을 가지고있다.컴퓨터가 잠자기 상태 일 때 Java 프로그램을 다시 시작 하시겠습니까?

예 :

컴퓨터가 실행중인 경우 작동
while (true) { 
    Thread.sleep(20000); 
    newMessages(); 
} 

. 그러나 사용자가 컴퓨터를 잠자기 상태로 둔 다음 나중에 일정 시간 깨우면 전체 프로그램이 엉망이되어 20 초마다 더 이상 메시지를 확인하지 않습니다. 이 문제를 해결할 수있는 방법이 있습니까?

답변

2

Thread.sleep 대신에 Timer을 사용할 수 있습니다.

스레드가 백그라운드 스레드에서 이후 실행을 위해 작업을 예약하도록하는 기능. 작업은 한 번 실행하거나 정기적으로 반복 실행하도록 예약 할 수 있습니다.

귀하의 코드는 다음과 같을 수 있습니다

final Timer timer = new Timer(); 
final TimerTask task = new TimerTask() {   
    @Override 
    public void run() { 
     newMessages(); 
    } 
};  
timer.scheduleAtFixedRate(task, new Date(), 20000); 

Timer Javadoc

관련 문제