线程阻塞的原因,有三大类:
1.获取锁,得不到,就进入到等待锁的阻塞队列。
只有占有锁的线程,释放锁时,才会唤醒这个队列中的线程。
notify不会唤醒该队列中的线程
2.正在占用锁的线程,调用了wait,就进入wait阻塞队列。
只有obj.notify()方法,才会唤醒这个队列中的线程。
一般的释放锁,无法唤醒该队列中的线程。
3.正在执行中的线程,调用了sleep()、join()或者IO,就进入了另一个阻塞队列。
睡眠时间到,或者IO阻塞结束,线程才能得以继续进入可运行状态。