在下面的执行中,
T1
l1.lock
a.write
l1.unlock
T2 l2.lock a.read l2.unlockT2中的a能读取用T1编写的新值吗?
我有两个相互矛盾的结论:
我不知道哪一个是正确的。有人能帮我吗?非常感谢!
发布于 2015-01-16 17:59:28
根据Java语言规范..。
1)监视器上的解锁发生--在上的每个后续锁之前,同一个监视器。
2)线程中的所有操作--在任何其他线程成功地从该线程上的join()返回之前。
很明显,答案是2。如果两个线程之间有连接,那么答案是1。
详情请向JLS查询。
https://stackoverflow.com/questions/27989704
复制相似问题