2013-05-06 59 views
0

我開始使用Java併發功能,並在此處的界面ScheduledExecutorService處。我碰到這個片段,使蜂鳴每10秒爲一小時:Java中的長時間運行調度執行程序

import static java.util.concurrent.TimeUnit.*; 
class BeeperControl { 
    private final ScheduledExecutorService scheduler = 
     Executors.newScheduledThreadPool(1); 

    public void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
       public void run() { System.out.println("beep"); } 
      }; 
     final ScheduledFuture<?> beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 
     scheduler.schedule(new Runnable() { 
       public void run() { beeperHandle.cancel(true); } 
      }, 60 * 60, SECONDS); 
    } 
} 

這似乎容易讓像我這樣的初學者,但我的問題是,我想一個Java程序,讀取一個MySQL表每10秒永遠。計劃的執行者是這類工作的最佳選擇嗎?

+4

是的。爲什麼不呢? – 2013-05-06 17:25:45

+0

'ScheduledExecutorService'就是你想要的,但是用方法'scheduleAtFixedRate()'或'scheduleWithFixedDelay()'而不是'schedule()' – 2013-05-06 17:32:16

+0

只需刪除最後一個時間表,它將取消任務,並且它將永遠運行。 – assylias 2013-05-06 17:35:25

回答

3

要永久運行,請取出代碼以取消任務。