gpt4 book ai didi

scala - scala TrieMap 和 Java ConcurrentHashMap 有什么区别

转载 作者:行者123 更新时间:2023-12-05 04:09:40 25 4
gpt4 key购买 nike

它说scala TrieMap 在遍历TrieMap 时会产生一个consistent 迭代器,我不明白这里的consistent 到底是什么意思。

我需要一个集合来建立一个对象池,即池中的对象会被并发借出/释放,同时一个调度线程会遍历这个集合,检查是否有陈旧对象,如果有,然后创建一个新的并从集合中删除陈旧的。

我正在评估 scala TrieMap 是否可以用作池。

此外,有人可以显示一些代码来说明 scala TrieMapJava ConcurrentHashMap 之间的区别吗?

最佳答案

我遇到的两者之间的一个区别是 TrieMap.getOrElseUpdate 可以多次运行提供的操作(尽管每个调用它的线程最多一次)但是 ConcurrentHashMap.computeIfAbsent 进行一些锁定以确保它只在所有线程中运行一次。

你可以试试下面的代码:

(0 to 1000) map { _ =>
Future {
Thread.sleep(100)
map.getOrElseUpdate(1, {
Thread.sleep(100)
counter.incrementAndGet()
})
}
}

并且计数器很可能不是 1,但是当使用 concurrentHashMap 尝试时它是 1。

关于scala - scala TrieMap 和 Java ConcurrentHashMap 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566633/

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