改变代码永远重复

时间:2012-07-25 09:08:19

标签: java scheduled-tasks

class BeeperControl {
    private final static ScheduledExecutorService scheduler = 
                                  Executors.newScheduledThreadPool(1);

    public static void main(String[] args){
        beepForAnHour();
    }

    public static 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);
    }
}

此代码每10秒钟发出一声哔哔声。我如何永远每10分钟发出一声哔哔声。因为它应该永远每隔10分钟发出一次哔哔声(不只是一个小时)

3 个答案:

答案 0 :(得分:3)

您明确安排了取消任务。如果您不想取消,请不要安排取消任务。

答案 1 :(得分:1)

只需删除执行取消的第二个计划。

答案 2 :(得分:0)

我建议:

public void run() {
    while(true) {
        System.out.println(“beep”);
        Thread.sleep(10000);
    }
}

+的;

  • 简单
  • 您可以跟踪您是否被中断

- 的:   - 你必须捕获InterruptedException

如果你想停止:

  • 将代码置于catch语句中停止/暂停并说myThread.interrupt();停止,再次启动它有点困难,最好的选择是创建一个新线程(完全相同)。信息在这里:How to start/stop/restart a thread in Java?
  • 在while循环中放置一个if语句,检查一个公共布尔isRunning,如果它是false,再说一次又一次重新检查直到它再次为真,将你的哔哔代码放入'true-块”。