假设链接列表N0,N1,N2中只有3个节点,我想使用以下同步语句获取N2上的锁
synchronized(N1.next)
上述语句会做什么,它会先锁定N1然后再锁定N1.next还是直接锁定N1.next?
答案 0 :(得分:2)
您似乎对互斥体如何工作有一些奇怪的想法;例如你以前的问题。
执行synchronized
方法或synchronized
块时,只获取一个互斥锁;即只有一个“东西”被锁定。获取该互斥锁只会影响其他线程,如果它们试图获取相同的互斥锁。
没有“如果我锁定它,它也会锁定它”。只有当您的应用程序始终使用特定的互斥锁/锁来表示这种情况时才会发生这种情况。
答案 1 :(得分:0)
它会自然地锁定N1.next,因为那是指定的对象。
答案 2 :(得分:0)