跳到主要内容

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

参考答案:

当一个线程进入一个对象的synchronized方法后,其他线程能否进入此对象的其他方法取决于这些其他方法是否也是synchronized的。

  1. 如果其他方法没有被synchronized修饰:那么其他线程可以同时进入这些非synchronized方法。因为synchronized只锁定调用它的方法,而不是整个对象。
  2. 如果其他方法也被synchronized修饰:那么其他线程需要等待当前线程释放该对象的锁,才能进入这个synchronized方法。

但需要注意的是,即使其他线程可以进入对象的非synchronized方法,它也不能访问该对象的任何synchronized方法或synchronized代码块,除非当前持有该对象锁的线程释放了锁。

总之,当一个线程持有一个对象的锁并进入其synchronized方法时,其他线程可以访问该对象的非synchronized方法,但不能访问其synchronized方法或synchronized代码块,直到当前线程释放了锁。