静态同步方法

时间:2013-07-08 18:56:10

标签: java multithreading concurrency

我知道Java实例同步方法可以并行运行,静态方法会序列化方法;我缺乏理解,因为静态方法锁定了Class对象,其他Class对象会发生什么;我们是否在所有静态类之间锁定?

感谢。

2 个答案:

答案 0 :(得分:2)

而不是对实例/对象进行锁定,而不是自己在类上进行锁定。

当你锁定类时,你只是锁定那个类,而不是所有类。

来自the docs

  

同步方法在执行之前获取监视器(第17.1节)。

     

对于类(静态)方法,使用与方法类的Class对象关联的监视器

     

对于实例方法,使用与此关联的监视器(调用该方法的对象)。

答案 1 :(得分:1)

Java类具有与类实例关联的监视器。由于每个类只有一个类实例,因此只能在该类实例上获取锁。

现在每个定义的类都有自己的实例,因此它有自己的监视器,所以要回答你的问题:同步静态方法只会阻止对该类的访问。