2013-01-22 57 views
3

我想製作一個Timer,等待400 MSc然後打印「hi!」 (例如。)。我知道該怎麼做,通過javax.swing.Timer如何製作計時器?

ActionListener action = new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     System.out.println("hi!"); 
    } 
}; 

加:

timer = new Timer(0, action); 
    timer.setRepeats(false); 
    timer.setInitialDelay(400); 
    timer.start(); 

但我知道這絕對不是一個好辦法,因爲這類型的Timer是搖擺的作品。如何以正確的方式做到這一點? (不使用Thread.sleep()

+3

java.util.Timer中 – mKorbel

+1

還有'java.util.Timer' –

+0

我不知道如何使用? – Soheil

回答

9
Timer t = new Timer(); 
t.schedule(new TimerTask() { 

      @Override 
      public void run() { 
       System.out.println("Hi!"); 

      } 
     }, 400); 
+0

就是我想要的! – Soheil

0

TimeUnit.MILLISECONDS.sleep(150L);

是一種替代;

你也可以看看this問題

使用while環路只是等待 或ScheduledThreadPoolExecutor

+0

使用util.Timer好得多.. – Soheil

+0

@Sheheil thx那個信息;) 我是新的到Java,又學到了...... = – C5H8NNaO4

1

你可以考慮Quartz調度這表明,這是一個真正的可擴展性,易於學習和配置解決方案。你可以看看官方網站上的教程。
http://quartz-scheduler.org/documentation/quartz-2.1.x/quick-start

+0

爲什麼不使用util.Timer? – Soheil

+1

這取決於你必須做什麼。如果你需要一個涉及日期和時間等複雜條件,最好使用Quartz,因爲它有一個非常靈活的調度器。您可以在每月的每個星期三或每個月的最後一天設置條件爲12.00。它還可以自動重複一次以上的工作,例如每小時一次,持續5個小時。另一方面,對於一個簡單的計時器,我也會使用util.Timer。 –

+0

很好的信息,thanx ... – Soheil

1
import java.text.SimpleDateFormat; 
import java.util.Calendar; 

public class currentTime { 

    public static void main(String[] args) { 
     Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
     System.out.println(sdf.format(cal.getTime())); 
    } 

}