java - TimerTask、定时器、线程?

标签 java swing

我正在尝试在 JLabel 上连续显示日期和时间。因此,在我观看的上一篇教程中,演讲者说“您必须在必要时使用此线程,因为它会占用程序中的内存”。

所以我搜索其他替代方案,发现 Timer 和 TimerTask 哪个是程序长期运行最有效的方法?

最佳答案

定时器用于在一定时间间隔、延迟后或两者的组合上运行任务(即: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 Concurrency Tutorial ),或使用 Swing Timer反而。下面的代码使用 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);

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

关于java - TimerTask、定时器、线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017173/

相关文章:

java - 如何在核心java程序中添加一个单选按钮组,以便一次只能选择一个单选按钮?

java - 将文本导入 JTable - 行不会分隔,它们只是创建一个非常长的行。 - Java Swing

java - 将鼠标移到 Chrome 网页元素上时计时器会加快

java - Swing 不在 Applet 中绘图

java - ILOG JRules 中的技术规则和功能有什么区别?

java - 保存集合 : org. hibernate.LazyInitializationException : failed to lazily initialize a collection, 没有 session 或 session 已关闭

java - 是否可以在不使用注释的情况下在 GAE/java 中保存数据?

java - java函数内的局部变量是线程安全的吗

java - java中的HttpClient

java - 我怎样才能让我的 cardLayout 工作?