计时器任务 vs 计时器 vs 线程



我正在尝试在 JLabel 上连续显示日期和时间。所以在我看过的最后一个教程中,演讲者说"你必须在必要时使用此线程,因为它会占用程序中的内存"。

所以我搜索其他替代方案,我发现计时器和计时器任务哪个是程序长期使用的最有效方式?

计时器用于按时间间隔、延迟后或两者的组合运行任务(即:计时器任务)。在您的情况下,您可以使用这样的东西:

   java.util.Timer timer = new java.util.Timer();
    timer.schedule(new TimerTask() {
        public void run() {
//            do task
        }
    }, 0, 1000);  //updates every second

请注意,为了更新 Swing 线程以外的线程中的 Swing 组件,您需要使用 SwingWorker (请参阅 Swing 并发教程),或者改用 Swing 计时器。下面的代码使用 Swing 计时器每秒使用新日期更新标签:

javax.swing.Timer timer1 = new javax.swing.Timer(0, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            label.setText(new Date());
        }
    });
    timer1.setRepeats(true);
    timer1.setDelay(1000);

我还没有测试过这个,所以你可能需要稍微调整一下才能为你工作。

最新更新