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