小编典典

TimerTask vs Timer vs Thread?

java

我试图在JLabel上连续显示日期和时间。因此,在我看过的上一个教程中,发言人说:“您必须在必要时使用此线程,因为它会占用程序的内存”。

因此,我搜索了其他替代方法,然后找到了Timer和TimerTask,这是在程序的长期运行中最有效的方法?


阅读 210

收藏
2020-11-26

共1个答案

小编典典

计时器用于在一定间隔后,延迟或两者结合后运行任务(即TimerTask)。在您的情况下,您可以使用以下方式:

   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);

我尚未对此进行测试,因此您可能需要对其进行一些调整才能为您工作。

2020-11-26