gpt4 book ai didi

java - 为什么我们不能在私有(private)锁的情况下获取锁?

转载 作者:行者123 更新时间:2023-12-01 19:01:48 25 4
gpt4 key购买 nike

为什么要把锁对象设为私有(private),封装锁,使客户端代码无法获取它?

对象的内在锁

   public class A{
private final Set<Integer> set = new HashSet<Integer>();

public synchronized void addInt(int i){
set.add(i);
}
}

私有(private)锁

   public class B{
private final Set<Integer> set = new HashSet<Integer>();

public void addInt(int i){
synchronized(set){
set.add(i);
}
}
}

最佳答案

嗯,另一个类根本无法访问set,因为它是私有(private)的。其他人因为无权访问该引用而无法执行的许多操作中,同步就是其中之一。

如果 getter 直接返回该引用(无需包装或复制对象),其他人就可以对其进行同步,从而抵消了私有(private)对象上锁的好处。

关于java - 为什么我们不能在私有(private)锁的情况下获取锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com