假设链表中只有 3 个节点 N0 、 N1 、 N2 ,我想使用以下同步语句获取 N2 上的锁
synchronized(N1.next)
上面的语句会做什么,是先锁N1再锁N1.next还是直接锁N1.next?
最佳答案
您似乎对互斥锁的工作原理有一些奇怪的想法;例如还有你之前的问题。
当执行synchronized
方法或synchronized
block 时,仅获取一个互斥体;即只有一个“东西”被锁定。并且,获取该互斥锁只会影响其他尝试获取相同互斥锁的线程。
不存在“如果我锁定这个,它也会锁定那个”的问题。只有当您的应用程序始终使用特定的互斥锁/锁来表示这一点时,才会发生这种情况。
关于java - 链表数据结构的同步问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798274/