2013-08-27 48 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 ^有效。有點明顯。謝謝! – Alex

+0

在這裏,我將添加它作爲答案 – StormeHawke

回答

0

您可以使用System.exit(int exitCode);

注意,如果你這樣做,JVM將立即終止。這也是finally{}塊不會執行的唯一情況。

3

我想你可以使用shutdownNow方法,這應該Attempts to stop all actively executing tasks and halts the processing of waiting tasks根據文檔。

+0

關機幾乎完成,但等待執行任務完成。重點是「更新」不會被執行了,但程序並沒有終止 – Alex

+1

@Alex我認爲這是正確的方式,你的應用程序可能不會終止,因爲'Executors'線程沒有終止, shutdownNow'確實 – Katona