线程在 java 中使用父类静态变量上的子类访问锁



如果其他线程可以访问继承相同父级的其他子类对象,并且已经锁定了该静态变量,那么可以访问子类对象的线程是否可以在同步块中锁定其父类静态变量?

子类对象是否可以锁定父类静态变量

线程获取实例(对象)上的锁。不可以,如果一个线程获取了锁,则另一个线程必须等到第一个线程释放锁。请注意,类不获取锁,线程获取锁。

答案是"mu"。

锁不是由类获取,而是由线程获取,因此您的问题没有有效的答案。

(还有,有内部类,有子类

,但恐怕没有类这样的东西)


查看您编辑的问题:一次只能有一个线程保存同步锁。持有它的线程可以根据需要多次获取锁:当它进入在同一对象上同步的另一个同步块时,它不会阻塞。

查看锁时,类之间的关系不会发挥作用。因此,如果变量是静态的,并且您从一个线程对其进行同步,则另一个线程无法同时在其上同步 - 它必须等待第一个同步块完成。这与线程有权访问哪些类或对象无关。

最新更新