Java循环与睡眠

时间:2016-08-11 08:34:35

标签: java infinite-loop thread-sleep

为了满足我公司的需求,我需要实现一个循环

  1. 读取字段等于标志的记录
  2. 要么睡觉(如果结果为空),要么执行记录中数据概述的任务
  3. 更新状态
  4. 并重复1。
  5. 循环的用户应该能够通过在循环外设置一个标志来切换循环。

    我尝试使用带有while的{​​{1}}循环来实现它,但我想知道是否有更好的替代方案。

3 个答案:

答案 0 :(得分:1)

我个人会使用似乎符合您要求的TimerTimerTask,并且已经包含在JDK中。

否则,您还可以查看更完整的Quartz

以下是使用计时器每秒执行一次this page启发任务的示例:

public class Reminder {
Timer timer;

public startReminder() {
    timer = new Timer();
    timer.schedule(new RemindTask(),
                   0,        //initial delay
                   1*1000);  //subsequent rate
}

class RemindTask extends TimerTask {
    public void run() {
        System.out.println("Time's up!");
        //use timer.cancel() to stop the reminder
    }
}
}
...

答案 1 :(得分:1)

javafx.animation.PauseTransition也是一个选项:

    PauseTransition pause = new PauseTransition(
            Duration.seconds(2)
    );
    pause.setOnFinished(event -> System.out.println("Woke up...."));
    System.out.println("Going to sleep....");
    pause.play();

答案 2 :(得分:0)

cron job (Unix样式名称),任务计划程序。搜索将产生一些像石英这样的库。它们是基于计时器的。