分享

java中sleep()的用法(毫秒)

 wusiqi111 2018-03-30

Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。
当线程睡眠时,它睡在某个地方,在苏醒之前不会返回到可运行状态。
当睡眠时间到期,则返回到可运行状态。
 
线程睡眠的原因:线程执行太快,或者需要强制进入下一轮,因为Java规范不保证合理的轮换。
 
睡眠的实现:调用静态方法。
[java] view plain copy
  1. try {  
  2.     Thread.sleep(1000);  
  3. catch (InterruptedException e) {  
  4.     e.printStackTrace();   
  5. }  
睡眠的位置:为了让其他线程有机会执行,可以将Thread.sleep()的调用放线程run()之内。这样才能保证该线程执行过程中会睡眠。
[java] view plain copy
  1. public class TestSleep {  
  2.    
  3.   public static void main(String[] args) {  
  4.      
  5.     MyThread2 t1 = new MyThread2("TestSleep");  
  6.     t1.start();  
  7.         
  8.      for(int i=0 ; i <10; i++)  
  9.               System.out.println("I am Main Thread");  
  10.    }  
  11.  }  
  12.    
  13.  class MyThread2 extends Thread {  
  14.     
  15.     MyThread2(String s) {  
  16.      super(s);  
  17.      }  
  18.        
  19.   public void run() {  
  20.     for(int i = 1; i <= 10; i++) {  
  21.      System.out.println("I am "+getName());  
  22.      try {  
  23.       sleep(1000); //暂停,每一秒输出一次  
  24.       }catch (InterruptedException e) {  
  25.       return;  
  26.      }  
  27.      }  
  28.    }  
  29.   }  


注意:
1、线程睡眠是帮助所有线程获得运行机会的最好方法。
2、线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行。
3、sleep()是静态方法,只能控制当前正在运行的线程。
实例二:一个计数器,计数到100,在每个数字之间暂停1秒,每隔10个数字输出一个字符串
[java] view plain copy
  1. public class MyThread extends Thread {  
  2.     public void run() {  
  3.         for (int i = 0; i < 100; i++) {  
  4.             if ((i) % 10 == 0) {  
  5.                 System.out.println("-------" + i);  
  6.             }  
  7.             System.out.print(i);  
  8.             try {  
  9.                 Thread.sleep(1000);  
  10.                 System.out.print("    线程睡眠1秒!\n");  
  11.             } catch (InterruptedException e) {  
  12.                 e.printStackTrace();  
  13.             }  
  14.         }  
  15.     }  
  16.     public static void main(String[] args) {  
  17.         new MyThread().start();  
  18.     }  
  19. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多