3

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

谢谢。

4

2 回答 2

2

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

当您锁定课程时,您只是锁定了该课程,而不是所有课程。

文档

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

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

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

于 2013-07-08T19:08:23.520 回答
1

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

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

于 2013-07-08T19:11:20.383 回答