【问题标题】:Call a method at fixed time in JavaJava中固定时间调用方法
【发布时间】:2011-01-20 20:44:21
【问题描述】:

如何在特定时间调用方法?

例如在 6:00 和 13:00 调用方法。

我正在开发适用于 Windows 的桌面应用程序。

【问题讨论】:

    标签: java


    【解决方案1】:

    查看TimerTimerTask 类。您可以安排线程在特定时间或重复执行。

    public class Alarm {
        Timer _timer;
    
        public Alarm() {
    
            // Create a Date corresponding to 10:30:00 AM today.
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 10);
            calendar.set(Calendar.MINUTE, 30);
            calendar.set(Calendar.SECOND, 0);
    
            Date alarmTime = calendar.getTime();
    
            _timer = new Timer();
            _timer.schedule(new AlarmTask(), alarmTime);
        }
    
        class AlarmTask extends TimerTask {
            /**
             * Called on a background thread by Timer
             */
            public void run() {
                // Do your work here; it's 10:30 AM!
    
                // If you don't want the alarm to go off again
                // tomorrow (etc), cancel the timer
                timer.cancel();
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      使用Quartz 的替代方法。它实际上与TimerTimerTask 相同,但它确实允许使用cron 样式语法描述必须运行的内容。

      【讨论】:

        【解决方案3】:

        从 Java 1.5 开始有一个更好的方法,如果您需要更严格:ScheduledThreadPoolExecutor:

        当需要多个工作线程或需要 ThreadPoolExecutor(此类扩展)的额外灵活性或功能时,此类比 Timer 更可取。

        您可以在scheduleAtFixedRate()scheduleWithFixedRate() 之间进行选择。有关用法的更多详细信息,请参阅链接的 javadoc。

        【讨论】:

          猜你喜欢
          • 2011-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多