java是否产生/加入释放监视器锁?
Possible Duplicate:
Does thread.yield() lose the lock on object if called inside a synchronized method?
我知道Thread.sleep()
持有锁,但Object.wait()
释放锁。有人说yield
实际上实现了sleep(0)
。这是否意味着屈服不会释放锁
另一个问题。假设当前线程已获取锁,然后调用anotherThread.join()
。当前线程是否释放锁
# 1 楼答案
除非javadoc提到一个对象的监视器(比如
Object.wait()
),否则您应该假设任何锁都将继续被持有。因此:对
没有
# 2 楼答案
sleep
将线程置于等待状态,yield
将线程直接返回到就绪池。(因此,如果线程生成,它可以直接从运行到就绪池,再由调度程序挑选,而无需等待。)两者都与锁定无关从Java Language Specification开始: