background image

 

睡眠;

 

等待;

 

因为需要一个对象的锁定而被阻塞。

  

1

 

、睡眠

Thread.sleep(long millis)和 Thread.sleep(long millis, int nanos)静态方法强制当前正在执行

线程

眠(暂停

执行),以 减

线程

线程

眠时,它入睡在某个地方,在苏醒之前不会返回到可运行状态。当睡 

 

眠时间到期,则返回到可运行状态。

  

线程

眠的原因

线程

行太快,或者需要强制进入下一轮,因为 Java

 

规范不保证合理的轮换。

  

 

睡眠的实现:调用静态方法。

        try {

            Thread.sleep(123);

        } catch (InterruptedException e) {

            e.printStackTrace();  

        } 

  
睡眠的位置:为了让其

线程

机会执行,可以将 Thread.sleep()的调用

线程

run()之内。这样才能保证

线程

 

行过程中会睡眠。

  
例如,在前面的例子中,将一个耗时的操作改为睡眠,以减

线程

 

执行。可以这么写:

  
    public void run() {

        for(int i = 0;i<5;i++){ 

// 很耗时的操作,用来减

线程

执行

//            for(long k= 0; k <100000000;k++);

            try {

                Thread.sleep(3);

            } catch (InterruptedException e) {

                e.printStackTrace();  .

            }

            System.out.println(this.getName()+" :"+i);

        }

    } 

  

 

运行结果:

 

阿三 :0 

 

李四 :0 

 

阿三 :1 

 

阿三 :2 

 

阿三 :3 

 

李四 :1 

 

李四 :2