java中多线程的状态图

来源:互联网 发布:9.9包邮淘宝u站 编辑:程序博客网 时间:2024/06/08 17:43



上图所示为java中具有wait()和notify()方法情况下的线程状态图,当已经获得了对象的锁并且已经进入synchronized方法中时,若线程执行wait()方法,就会进入Blocked in object's wait pool状态,放弃对象的锁,当别的线程执行notify()方法时就有可能将该线程再次唤醒,进入Blocked in object's lock pool,此时该线程缺少对该对象的锁,若在获得该对象的锁即可进入可执行状态(就绪状态)。当正在执行的线程将要访问synchronized方法时,而该方法所对应的对象已经被别的线程上了锁,该线程就进入Blocked in object's lock pool状态等待获取对象的锁。这里要注意处于Blocked in object's wait pool的线程被别的线程唤醒后是进入Blocked in object's lock pool状态,因为此时线程不一定能够获对象的锁。还没有进入synchronized方法的线程有可能进入Blocked in object's lock pool状态,已经进入synchronized方法的线程只能先进入Blocked in object's wait pool状态才可能转换为Blocked in object's lock pool状态。
0 0
原创粉丝点击