根据 JLS第 8.4.3.6 节:
同步方法在执行之前获取监视器(第 17.1 节)。
对于类(静态)方法,使用与方法类的 Class 对象关联的监视器。
在这个同步方法中,移动类级别的锁被获取。那么究竟是使用哪个Class对象来获取这个锁。是 Interface.class
还是ClassImplementingInterface.class
?如果是后者,是否有任何场景可以使用接口监视器?或者更确切地说接口是否有监视器?
我已经阅读过每个对象都与一个监视器相关联,并且在静态锁的情况下,监视器是在相应的 Class 对象上获得的。正如我们可以做的那样,Interface.Class 意味着接口具有相应的 Class 对象,我们可以在不明确说明的情况下锁定该监视器synchronized(Interface.class)
。