线程状态,BLOCKED和WAITING有什么区别
线程可以通过notify
,join
,LockSupport.park
方式进入wating
状态,进入wating状态的线程等待唤醒(notify或notifyAll)才有机会获取cpu的时间片段来继续执行。
线程的 blocked
状态往往是无法进入同步方法/代码块来完成的。这是因为无法获取到与同步方法/代码块相关联的锁。
与wating状态相关联的是等待队列,与blocked状态相关的是同步队列,一个线程由等待队列迁移到同步队列时,线程状态将会由wating
转化为blocked
。可以这样说,blocked
状态是处于wating
状态的线程重新焕发生命力的必由之路。