【发布时间】:2010-09-19 23:25:30
【问题描述】:
我想知道在 Java 中如果我在同一个对象上同步两次是否会出现任何奇怪的行为?
场景如下
pulbic class SillyClassName {
object moo;
...
public void method1(){
synchronized(moo)
{
....
method2();
....
}
}
public void method2(){
synchronized(moo)
{
doStuff();
}
}
}
两种方法都使用对象并在其上同步。第二个方法被第一个方法调用时会因为被锁定而停止吗?
我不这么认为,因为它是同一个线程,但我不确定可能会出现任何其他奇怪的结果。
【问题讨论】:
-
想知道如果不从方法 1 调用方法 2 会发生什么,如果方法 1 和 2 同时被对象 1 和 2 调用。由于这两个方法都锁定在同一个对象 moo 上,一次只会执行这两种方法中的一种?
标签: java multithreading synchronization mutex