关于java中collection提供的同步容器方法

发布于 2021-11-29 05:01:06 字数 270 浏览 707 评论 7

最近看kafka的设计,发现在abstractConfig中使用了 Collections.synchronizedSet(new HashSet<String>()) ,字面上能够理解,在原来hashset上面做了一层包装,在源代码中有Returns a synchronized (thread-safe) set backed by the specified set.的注释, 大部分实现在synchronizedCollection中,但是,有并法包的存在,那么,还用这种容器方法做什么呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

傾城如夢未必闌珊 2021-12-01 10:07:39

这是防止并发的情况,如:遍历的同时又在删除数据

私藏温柔 2021-12-01 10:06:26

kafka的源代码里面再用,不知道他们是怎么想的

北笙凉宸 2021-12-01 09:45:08

kafka的源代码里面现在再用,不知道他们是怎么想的

混吃等死 2021-12-01 07:36:06

回复
要不是为了在低版本的JVM上运行,要不就是认为此处竞争并不激烈,没必要用分段锁

无声静候 2021-12-01 04:45:44

@逝水fox 低版本的JVM?这个回答不错,竞争激烈不同程度的情况下,使用不同的同步容器方法,不同情况下,两者的代价会有超越,是这个意思吗?

不乱于心 2021-11-30 18:39:06

@徐建海 kafka的设计里面metrics的实现中有 private final ConcurrentMap<MetricName, KafkaMetric> metrics;的设计,那么,向下兼容的论断就不成立了

柳若烟 2021-11-29 16:28:20

这个方法出现在并发包之前

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文