簡體   English   中英

TimerTask vs Timer vs Thread?

[英]TimerTask vs Timer vs Thread?

我試圖在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並發教程 ),或者使用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);

我尚未對此進行測試,因此您可能需要對其進行一些調整才能為您工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM