在 上一篇章 中, 我们强调了 BLOCKED 状态跟 I/O 的阻塞是不同的, 它不是一般意义上的阻塞, 而是特指被 synchronized 块阻塞, 即是跟线程同步有关的一个状态.
BLOCKED 状态的定义
前面 已经说过 BLOCKED(阻塞) 的简单定义为:
一个正在阻塞等待一个监视器锁的线程处于这一状态. (A thread that is blocked waiting for a monitor lock is in this state.)
更加详细的定义可以参考 Thread.State
中的 javadoc:
/**
* Thread state for a thread blocked waiting for a monitor lock.
* A thread in the blocked state is waiting for a monitor lock
* to enter a synchronized block/method or
* reenter a synchronized block/method after calling
* {@link Object#wait() Object.wait}.
*/
BLOCKED,