跳到主要内容

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

参考答案:

当一个线程进入一个对象的synchronized方法后,其他线程对该对象的访问会受到限制,具体取决于方法的访问修饰符和其他因素。以下是几种可能的情况:

  1. 同一对象的其他synchronized方法: 如果一个线程已经持有一个对象的锁(即进入该对象的某个synchronized方法),那么其他线程不能进入该对象的任何其他synchronized方法,直到第一个线程释放锁。因为synchronized方法或块是互斥的,同一时间只能有一个线程持有对象的锁。
  2. 同一对象的非synchronized方法: 如果一个线程已经进入一个对象的synchronized方法,其他线程可以同时访问该对象的非synchronized方法。因为非synchronized方法不需要获取对象的锁。
  3. 其他对象的synchronized或非synchronized方法: 其他线程可以访问其他对象的synchronized或非synchronized方法,不受第一个线程对第一个对象锁的持有影响。

总之,当一个线程进入一个对象的synchronized方法后,其他线程不能进入该对象的任何其他synchronized方法,但可以访问其非synchronized方法。其他线程也可以访问其他对象的任何方法,不受此限制。