2013-05-06 94 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

要永久运行,请取出代码以取消任务。