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,
这句话很长,可以拆成两个简单句来理解。
A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method。
一个处于 blocked 状态的线程正在等待一个监视器锁以进入一个同步的块或方法。
A thread in the blocked state is waiting for a monitor lock to reenter a synchronized block/method after calling Object.wait。
一个处于 blocked 状态的线程正在等待一个监视器锁,在其调用 Object.wait 方法之后,以再次进入一个同步的块或方法。
进入(enter)同步块时阻塞
先说第一句,这个比较好理解。
监视器锁用于同步访问,以达到多线程间的互斥。所以一旦一个线程获取锁进入同步块,在其出来之前,如果其它线程想进入,就会因为获取不到锁而阻塞在同步块之外,这时的状态就是 BLOCKED。
注:这一状态的进入及解除都不受我们控制,当锁可用时,线程即从阻塞状态中恢复。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/75947.html