我是Java线程和同步的新手。

可以说我有:

public class MyClass(){

    public synchronized void method1(){
        //call method2();
    }

    public synchronized void method2(){};

}
  • 当我在实例对象上同步method1()时是什么意思?因此,当一个线程在尝试访问synchronized method1()时获得了锁时,是否会阻止其他线程从同一对象访问另一个synchronized method2()
  • 可以说一个线程在访问method1()时获得了一个锁,但是可以说method1()调用了method2(),它也是synchronized。可以吗?我的意思是,有任何规则可以阻止method1()调用method2()吗?

  • 提前致谢。

    最佳答案

  • See here:

  • 由于此线程持有当前对象的锁,因此它可以调用method2(),其他任何线程都不能。
  • 10-07 18:43