可以在控制台应用程序中使用Thread.sleep作为计时器吗?

时间:2014-08-30 04:34:06

标签: java timer console-application sleep

有一个简短的问题。在我正在编写的Java应用程序中,我希望终端打印“Hello”,但一次打印1个字母,但速度很慢。

实施例: 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 个答案:

答案 0 :(得分:3)

除非你的程序在写信之间应该做些什么,否则睡眠是一种非常合适的方式来消磨时间。

答案 1 :(得分:2)

Java Thread.Sleep()不保证已过去的确切时间: 它只是近似的“等待”时间

为了更好地达到像你这样的目的,你可以使用“Timer”类,代码会更好:

  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);      
   }
}