java - 链表数据结构的同步问题?

标签 java multithreading concurrency locking

假设链表中只有 3 个节点 N0 、 N1 、 N2 ,我想使用以下同步语句获取 N2 上的锁

synchronized(N1.next)

上面的语句会做什么,是先锁N1再锁N1.next还是直接锁N1.next?

最佳答案

您似乎对互斥锁的工作原理有一些奇怪的想法;例如还有你之前的问题。

当执行synchronized方法或synchronized block 时,仅获取一个互斥体;即只有一个“东西”被锁定。并且,获取该互斥锁只会影响其他尝试获取相同互斥锁的线程。

不存在“如果我锁定这个,它也会锁定那个”的问题。只有当您的应用程序始终使用特定的互斥锁/锁来表示这一点时,才会发生这种情况。

关于java - 链表数据结构的同步问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798274/

相关文章:

mysql - 如何锁定队列中的行?

Java - 在构造函数中为多个变量分配参数

java - 无法在 Windows 10 上安装 Java(1603 错误)

java - @GetMapping 和 @GetMapping ("/{id}")始终返回 @GetMapping ("/{id}")

java - 终止运行 native 代码的线程

Java线程工作频率

Java Try Catch block

java - 为什么这个程序中同一个对象没有死锁 - Java 多线程

concurrency - 如何处理对 redis 键的并发更新?

Go Routines 有时有效,有时会出现关闭 channel 错误