同步静态方法可以导致类级别锁定吗?

时间:2011-08-28 17:43:42

标签: java static

如果A类的公共静态方法被'synchronized'关键字标记,那么是否有可能进行类级锁定?

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

3 个答案:

答案 0 :(得分:4)

  

如果A类具有标记的公共静态方法   'synchronized'关键字,那么是否有可能上课   水平锁?

是的,A类会有一个级别锁定。

  

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

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

答案 1 :(得分:3)

是的,锁定将保留在Class对象上。

引自Locks In Synchronized Methods

  

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

答案 2 :(得分:2)

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