2013-08-27 2 views
1

5 분마다 "업데이트"메소드를 실행하도록 예약하는 다음 클래스가 있습니다. 문제는 "업데이트"가 고정 된 횟수만큼 실행되기를 원합니다. scheduler.shutdown()을 사용하면 업데이트 방법이 더 이상 실행되지 않지만 프로그램이 계속 실행 중이므로 아무 것도하지 않는 것으로 가정합니다.종료 스케줄러 - Java

어떻게 완전히 멈출 수 있습니까?

static Runnable update = new Runnable() {   
    @Override 
    public void run() { 

     if (count >= MAX_UPDATES) { 
      scheduler.shutdown(); 
     } else { 
      //Do something 
      count++; 
     } 
    } 
} 

public static void main(String[] args) { 

    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); 
    scheduler.scheduleAtFixedRate(update, 0, 5, TimeUnit.MINUTES); 
} 
+2

'System.exit (int exitCode); ' – StormeHawke

+1

@StormeHawke^works. Kinda 명백한. 감사! – Alex

+0

여기에 대답으로 추가하겠습니다. – StormeHawke

답변

0

당신은 당신이 그렇게 할 경우, JVM이 즉시 종료됩니다 것을 System.exit(int exitCode);

주를 사용할 수 있습니다. 또한 이것은 finally{} 블록이 실행되지 않는 유일한 상황입니다.

3

나는 워드 프로세서에 따라이해야 Attempts to stop all actively executing tasks and halts the processing of waiting tasks, 당신은 shutdownNow 방법을 사용할 수 있습니다 생각합니다.

+0

종료는 거의 동일하지만 실행중인 작업이 완료되기를 기다립니다. 요점은 "update"가 더 이상 실행되지 않지만 프로그램이 종료하지 않는다는 것입니다. – Alex

+1

@Alex 이것이 올바른 방법이라고 생각합니다. Executors 스레드가 종료되지 않았기 때문에 응용 프로그램이 종료되지 않습니다. shutdownNow' 않습니다 – Katona