java线程进入阻塞的条件
2017-02-17 00:00
351 查看
什么是阻塞?线程能够运行,但是某个条件阻止它的运行,进入阻塞状态的线程调度器不会给他分配CPU时间片,直到他再次进入就绪状态的时候才可以。
1.等待输入或者输出完成
2.线程自身调用了wait
3.线程自身调用了sleep
4.任务在调用了某个对象上的同步方法,但是锁被其他任务获取了。
其实总结起来就是一个是自己把自己打晕,另一个是别人把自己打晕。对于自残的这种就是一个调用wait,一个调用sleep,他们的区别是调用sleep不会让出cpu的时间片,而调用wait会让出cpu时间片。
后者则是,等待外界的输入或者输出到外界的完成,或者是友军不给力,没有把锁给让出来。
我的个人博客
1.等待输入或者输出完成
2.线程自身调用了wait
3.线程自身调用了sleep
4.任务在调用了某个对象上的同步方法,但是锁被其他任务获取了。
其实总结起来就是一个是自己把自己打晕,另一个是别人把自己打晕。对于自残的这种就是一个调用wait,一个调用sleep,他们的区别是调用sleep不会让出cpu的时间片,而调用wait会让出cpu时间片。
后者则是,等待外界的输入或者输出到外界的完成,或者是友军不给力,没有把锁给让出来。
我的个人博客