我知道这Thread.currentThread().yield()
是对线程调度程序的通知,如果存在任何此类线程,它可能会将 cpu 周期分配给具有相同优先级的其他线程。我的问题是:如果当前线程已锁定某个对象并调用yield()
,它会立即失去该锁定吗?而当线程调度器发现没有这样的线程来分配cpu周期时,那么已经调用的线程yield()
将再次争夺锁定它之前丢失的对象?
我在 javadoc 和论坛中找不到它 [http://www.coderanch.com/t/226223/java-programmer-SCJP/certification/does-sleep-yield-release-lock] 有 50-50 个答案。
我认为yield()
(比如说thread1)应该释放锁,因为如果某个具有相同优先级的线程(比如说thread2)想要对同一个对象进行操作,那么当线程调度程序最终将cup分配给thread2时,它就有机会。