java线程waiting与blocked的区别

来源:互联网 发布:oracle数据库自学视频 编辑:程序博客网 时间:2024/05/29 08:40

java线程waiting与blocked的区别

java线程中含有waiting与blocked两种状态,两种状态有着明显的区别,本文从jdk源码中两种状态的设计角度和状态进入角度来分析两者的区别。

源码分析

java线程waiting与blocked的区别

处于blocked状态的线程等待获取监视器锁以期进入同步代码块/方法中,文档中的在调用Object.wait()方法后重入同步代码块/方法
不是很理解。

java线程waiting与blocked的区别

档介绍了导致线程进入Wating状态的原因以及如何退出Wating状态。

区别

线程可以通过notify,joinLockSupport.park方式进入wating状态,进入wating状态的线程等待唤醒(notify或notifyAll)才有机会获取cpu的时间片段来继续执行

线程的 blocked状态往往是无法进入同步方法/代码块来完成的。这是因为无法获取到与同步方法/代码块相关联的锁。

java线程waiting与blocked的区别

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

原创粉丝点击