2013-08-27 47 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