4

我正在寻找 Java 中监视计算机时钟(分钟)并在每次更改时触发方法/线程的最佳方法。

因此,如果时间是 13:20 并且它更改为 13.21 则做一些事情。因此,任何时候只要有微小的变化,就会触发一些代码。

聆听时钟分钟部分的变化的最佳方式是什么?

谢谢,理查德

4

3 回答 3

8
  1. 使用 System.currentTimeMillis() 查找当前系统时间
  2. 计算距离下一分钟还有多少毫秒
  3. 在 Timer 上安排 TimerTask 以在未来的毫秒数内运行
  4. 在该 TimerTask 的事件处理程序中,安排一个新的重复 TimerTask 每 60,000 毫秒运行一次。

    int milisInAMinute = 60000;
    long time = System.currentTimeMillis();
    
    Runnable update = new Runnable() {
        public void run() {
            // Do whatever you want to do when the minute changes
        }
    };
    
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            update.run();
        }
    }, time % milisInAMinute, milisInAMinute);
    
    // This will update for the current minute, it will be updated again in at most one minute.
    update.run();
    
于 2012-07-24T16:30:44.560 回答
2

听起来像是Quartz的工作。您可以使用以下 cron 表达式执行此操作:

0 * * * * ?

于 2012-07-24T16:23:43.530 回答
1

Date d = new Date(System.currentTimeMillis());

然后你可以得到分钟d.getMinutes()。在等待值d.getMinutes()更改的线程中运行检查。

于 2012-07-24T16:24:34.350 回答