线程阻塞的三大原因

线程阻塞的原因,有三大类:

 1.获取锁,得不到,就进入到等待锁的阻塞队列。

      只有占有锁的线程,释放锁时,才会唤醒这个队列中的线程。

      notify不会唤醒该队列中的线程

   2.正在占用锁的线程,调用了wait,就进入wait阻塞队列。

      只有obj.notify()方法,才会唤醒这个队列中的线程。

      一般的释放锁,无法唤醒该队列中的线程。

  3.正在执行中的线程,调用了sleep()、join()或者IO,就进入了另一个阻塞队列。

      睡眠时间到,或者IO阻塞结束,线程才能得以继续进入可运行状态。

 

posted @ 2020-03-17 17:03  小小吸血鬼  阅读(2640)  评论(0编辑  收藏  举报