当前位置: 首页 > 面试题库 >

WAIT和BLOCKED线程状态之间的区别

雍焱
2023-03-14
问题内容

线程状态WAIT和线程状态BLOCKED有什么区别?

该Thread.State文档:

已阻止
该线程在等待监视器锁定时被阻止,处于此状态。

等待中
无限期等待另一个线程执行特定操作的线程处于此状态

没有向我解释差异。


问题答案:

线程在调用wait()对象后进入等待状态。这称为 等待
状态。一旦线程达到等待状态,它将需要等待,直到其他线程调用notify()notifyAll()对象上。

通知此线程后,它将无法运行。可能是其他线程也被通知了(使用notifyAll()),或者第一个线程还没有完成工作,因此它仍然被阻塞,直到有机会为止。这称为
阻塞 状态。每当线程尝试获取对象上的锁并且某个其他线程已经持有该锁时,就会发生Blocked状态。

一旦其他线程离开并且有这个线程机会,它便会基于JVM线程机制有资格进行接管工作,然后进入Runnable状态并进入运行状态。



 类似资料:
  • 问题内容: 和之间的线程有什么区别? 我是否了解线程仍处于运行模式并使用CPU周期,但是不会消耗任何CPU周期正确吗? 为什么我们都 和:如何实现他们在一个较低的水平有什么不同? 问题答案: 可以被另一个notify正在等待等待的监视器调用的线程“唤醒” 。此外,必须在监视对象的块中发生,而sleep不会: 此时,当前正在执行的线程将等待并释放监视器。另一个线程可能会做 (在同一mon对象上),第

  • 本文向大家介绍进程和线程之间的区别,包括了进程和线程之间的区别的使用技巧和注意事项,需要的朋友参考一下 进程是活动程序,即正在执行的程序。它不仅包含程序代码,还包括程序计数器,进程堆栈,寄存器,程序代码等。与此相比,程序代码只是文本部分。 线程是可以由调度程序独立管理的轻量级进程。它使用并行性提高了应用程序性能。线程与它的对等线程共享信息,如数据段,代码段,文件等,而该线程包含其自己的寄存器,堆栈

  • 本文向大家介绍Java中的Wait和Sleep之间的区别,包括了Java中的Wait和Sleep之间的区别的使用技巧和注意事项,需要的朋友参考一下 Wait()-线程释放此监视器的所有权,并等待直到另一个线程通知该对象的监视器上正在等待通过调用方法或方法唤醒的线程。然后,线程等待,直到它可以重新获得监视器的所有权并恢复执行。 Sleep()-此方法使当前正在执行的线程进入休眠状态(暂时停止执行)达

  • 根据我在这里读到的内容,flowfile存储库充当apache Nifi的预写日志。 多谢了。

  • 问题内容: 我试图了解React的有状态和无状态组件之间的确切区别。好的,无状态组件只会做某事,但是什么也不会记住,而有状态组件可能会做同样的事情,但是它们会记住其中的内容。那是理论。 但是现在,在检查如何使用代码显示此内容时,我有点麻烦了。以下两个示例对吗?唯一的区别确实是函数的定义。 无状态组件的示例: 有状态组件的示例: 问题答案: 是的,那是有区别的。除了有 状态 组件,您还可以使用以下方

  • 线程状态WAIT和线程状态BLOCKED有什么区别? 线。国家文件: Blocked 等待监视器锁而被阻塞的线程处于这种状态。 等待 无限期等待另一个线程执行特定操作的线程处于此状态 这不能向我解释差异。