내가 다음 함수에 몇 통화를 할 가정 :VM이 Control-C에 의해 종료되면 타이머 시작 스레드가 완료되도록 할 수 있습니까?
public void StartTimedRuns(){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
public void run(){
//do something that takes less than a minute
}
}, 0, 60*1000);
}
나의 이해는 스레드의 무리가이 시점에서 동시에 실행된다는 것입니다. 즉, 각 타이머 인스턴스는 1 분 간격으로 수명이 짧은 스레드를 생성합니다. 여기 지침에 따라 가정하자
나는 종료 후크를 설치 (I 제어-C를 누르면 실행) :
셧다운 후크 모든 타이머를 취소합니다. (타이머를 클래스 수준 컬렉션에 저장한다고 가정하십시오.)
VM이 종료되기 전에 모든 활성 스레드가 완료 될 것이라고 보장 할 수 있습니까?
관련하여 종료 훅은 스레드가 모두 종료 될 때만 호출됩니까?