gpt4 book ai didi

java - Collection.synchronizedMap 与同步 HashMap 中的各个方法

转载 作者:搜寻专家 更新时间:2023-11-01 02:18:13 30 4
gpt4 key购买 nike

Collections.synchronizedMap() 和所有方法同步的 HashMap 的包装器之间有什么区别。我没有看到任何区别,因为 Collections.synchronizedMap() 在内部为所有方法维护相同的锁。

基本上,以下代码片段之间有什么区别

Class C {    
Object o;

public void foo() {
synchronized(o) {
// thread safe code here
}
}
}

Class C {
Object o;

public synchronized void foo() {

}
}

最佳答案

只有一个区别:

Collections.synchronizedMap 能够使用与其自身不同的监视器。

使用同步方法与使用sychnchonized(this)-blocks 相同,这意味着包装器将成为监视器,并且可以从包装器外部锁定。

如果您不希望外部应用程序锁定您的显示器,则需要将其隐藏。

另一方面,如果您想以线程安全的方式调用多个方法,锁定整个集合是最简单的方法(但实际上可扩展性不是很好)。

注意:为了重用,最好将方法调用委托(delegate)给备份 Map 而不是重写类,因为稍后可以切换到另一个 Map 实现,而无需更改包装器。

关于java - Collection.synchronizedMap 与同步 HashMap 中的各个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242611/

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