我遇到了这个例子 (第422页)
class Test {
public static void main(String[] args) {
Test t = new Test();
synchronized(t) {
synchronized(t) {
System.out.printIn("made it!");
}
}
}
}
此外,显然,对我的问题的解释,但对我来说并不是很明显。
这个程序的输出是
made it!
请注意,如果单个线程无法多次锁定监视器,则此程序将最终陷入死锁。
指令synchronized
清晰,获取锁,执行指令体,释放锁。
嵌套指令的含义是什么synchronized
?它们(指令)如何相互交互?
这个例子旨在说明一个线程可以执行任意数量的嵌套线程,
synchronized
并且不会同时挂起。这就是显示的消息所说的。如果这不起作用,那么程序将挂起第二
synchronized
个直到它被释放t
,但由于它只能通过退出第一个来释放,它会阻塞自己