同步静态方法会导致类级锁吗?

  • 本文关键字:静态方法 同步 java static
  • 更新时间 :
  • 英文 :


如果一个类a有一个由'synchronized'关键字标记的公共静态方法,那么是否有可能拥有类级别锁?

当该类中存在锁时,我们可以实例化该类的对象还是与实例化无关?

如果类a有一个公共静态方法,该方法被标记为'synchronized'关键字,那么是否有可能拥有class级锁?

是的,在类a上会有一个类级别的锁。

当该类中存在锁时,我们可以实例化该类的对象还是与实例化无关?

当静态方法上有锁时,它只影响其他同步的静态方法。您仍然可以创建该类的新实例。

是,锁将在class对象上保持。

引用自同步方法中的锁

您可能想知道当调用静态同步方法时会发生什么,因为静态方法与类而不是对象相关联。在这种情况下,线程获取与类关联的Class对象的内在锁。因此,对类静态字段的访问由一个锁控制,该锁与类的任何实例的锁不同。

所有试图执行同一类的其他静态同步方法的其他线程,或在此Class实例上同步的任何其他方法将被阻塞。

最新更新