我知道Java实例同步方法可以并行运行,静态方法会序列化方法;我缺乏理解,因为静态方法锁定了Class对象,其他Class对象会发生什么;我们是否在所有静态类之间锁定?
感谢。
答案 0 :(得分:2)
而不是对实例/对象进行锁定,而不是自己在类上进行锁定。
当你锁定类时,你只是锁定那个类,而不是所有类。
来自the docs
同步方法在执行之前获取监视器(第17.1节)。
对于类(静态)方法,使用与方法类的Class对象关联的监视器。
对于实例方法,使用与此关联的监视器(调用该方法的对象)。
答案 1 :(得分:1)
Java类具有与类实例关联的监视器。由于每个类只有一个类实例,因此只能在该类实例上获取锁。
现在每个定义的类都有自己的实例,因此它有自己的监视器,所以要回答你的问题:同步静态方法只会阻止对该类的访问。