여기에서 비슷한 질문을 찾았지만 만족할만한 답변이 없었습니다. 그래서 다시 질문을 바꿔
주기적으로 (예 : 1 분 간격) 수행해야하는 작업이 있습니다. 절전 모드가있는 무한 루프가있는 새 스레드를 만드는 것과 달리 Timertask 및 Timer를 사용하여이를 수행 할 때의 이점은 무엇입니까?
timertask-를 사용하는 코드 스 니펫
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Thread 및 Sleep을 사용하는 코드 스 니펫
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
논리 실행이 간격 시간보다 더 많이 걸리는 경우 특정주기를 놓쳐도 걱정할 필요가 없습니다.
댓글 부탁드립니다 ..
업데이트 :
최근에 Timer와 Thread.sleep () 사용의 또 다른 차이점을 발견했습니다. 현재 시스템 시간이 11:00 AM이라고 가정합니다. 어떤 이유로 시스템 시간을 오전 10 시로 롤백하면 타이머가 오전 11시에 도달 할 때까지 작업 실행을 중지하지만 Thread.sleep () 메서드는 방해없이 작업을 계속 실행합니다. 이것은이 둘 사이에서 무엇을 사용할지 결정하는 주요 의사 결정자가 될 수 있습니다.