gpt4 book ai didi

java - 从 map 同步设置还是从同步 map 设置?

转载 作者:行者123 更新时间:2023-11-29 09:00:47 29 4
gpt4 key购买 nike

我需要一个不使用 Guava 集合的并发弱哈希集。哪一个是正确的?有什么副作用吗?

private Set<Session> subscribers1 = Collections.newSetFromMap(
Collections.synchronizedMap(new WeakHashMap<Session, Boolean>())
);
private Set<Session> subscribers2 = Collections.synchronizedSet(
Collections.newSetFromMap(new WeakHashMap<Session, Boolean>())
);

最佳答案

如果您查看实现,几乎是一样的。

Collections.newSetFromMap 创建一个新的 SetFromMap extends AbstracSet 实例。 SetFromMap 类基本上是 map 对象的包装器。但它确实从 AbstracSet 继承了 addAll 方法。这意味着在第一个选项中:

private Set<Session> subscribers1 = Collections.newSetFromMap(
Collections.synchronizedMap(new WeakHashMap<Session, Boolean>())
);

并非所有操作都会同步(即 addAll 方法 - 尽管它在幕后使用同步的 add 方法)。因此,我建议选择第二个选项:

private Set<Session> subscribers2 = Collections.synchronizedSet(
Collections.newSetFromMap(new WeakHashMap<Session, Boolean>())
);

关于java - 从 map 同步设置还是从同步 map 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17632332/

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