我正在尝试在 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/