2014-08-30 111 views
1

有一個快速的問題。在我正在編寫的Java應用程序中,我希望終端打印「Hello」,但一次只打印一個字母,但要慢一些。在控制檯應用程序中使用Thread.sleep作爲定時器可以嗎?

例子: ^ h (稍等幾秒鐘) Ë (稍等幾秒鐘) 升 (等)

我在做什麼每個字母后使用的Thread.sleep。所以問題是可以使用這種方法來做我想做的事情嗎?如在,這是一個計時器的有效使用?如果沒有,如果你能解釋爲什麼並提供解決方案,我很樂意。

代碼:

public static void main(String[] args) throws Exception { 
    System.out.println("H"); 
    Thread.sleep(750); 
    System.out.println("e"); 
    Thread.sleep(750); 
    System.out.println("l"); 
    Thread.sleep(750); 
    System.out.println("l"); 
    Thread.sleep(750); 
    System.out.println("o"); 
} 

我是相當新的使用這個論壇,所以我很抱歉,如果這個問題已經有了答案。謝謝! :)

回答

2

的Java Thread.sleep()方法並不能保證確切的時間過去了: 它只是近似的「等待」時間

爲了更好地做一個目的像你這樣的,你可以使用「定時器」類的代碼會更好:

public class TimerDemo { 

    private int ptr = -1; 
    String[] myStringArray = {"H","e","l","l","o"}; 
    public static void main(String[] args) { 

     final Timer timer = new Timer(); 

     // creating timer task, timer 
     TimerTask task = new TimerTask() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      System.out.println(myStringArray[++ptr]); 
      if (ptr == 4) { timer.cancel(); }  
     } 

    };   

     // scheduling the task at interval 
     timer.scheduleAtFixedRate(tasknew,0, 1000);  
    } 
} 
3

除非你的程序在寫字母之間應該做些什麼,否則睡眠是一個完美的方式來傳遞時間。

相關問題