【发布时间】:2012-05-09 01:23:01
【问题描述】:
我在 Heinz Kabutz 的一个 Java 专家 时事通讯版本中看到了这一点,尽管 Kabutz 博士的其余(实际上是所有)文章解释得很好且详细,但他似乎掩饰了这段代码在做什么,或者更重要的是,它的意义是什么:
public class SomeObject {
private Object lock1;
private Object lock2;
public void doSomething() {
synchronized(lock1) {
synchronized(lock2) {
// ...
}
}
}
}
嵌套synchronized 块的含义是什么?这对尝试doSomething() 的不同线程有何影响?
【问题讨论】:
-
在这种情况下,所有线程都会被外锁阻塞,直到被内锁线程释放。
-
您发布的代码片段没有任何作用;唯一可以拥有
lock2的线程是拥有lock1的线程。在不知道其余代码是什么以及这些锁的用途是什么的情况下,无法回答。 -
你在看哪篇文章?
标签: java multithreading concurrency