问题标签 [concurrentskiplistmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java ConcurrentSkipListMap 条目锁定在导航上
当与客户端提供的 Map 一起使用时,下面的类似乎卡在方法 lrPoints 中。到目前为止的结论是,要么 lrPoint 正在运行无限循环,要么存在死锁。我无法重现该错误,但可以通过阅读日志来确保永远不会退出 lrPoints 方法。
更重要的是,“get”方法返回正常。此映射是否正确构建以防止客户端锁定?这种方法可能失败还有其他原因吗?
编辑。添加更多日志记录并更改为 TreeMap 之后。我现在看到的问题是静态构造方法 Pair.of(.,.)。这种静态初始化程序是否有可能导致死锁?
java - ConcurrentSkipListMap 添加泛型类中定义的比较器
我有这堂课:
现在我想创建一个 ConcurrentSkipListMap 作为我在 Orderable 类中定义的 Comparator 传递。目标是使用 V 的比较器保持 ConcurrentSkipListMap 有序,其中 V 是扩展 Orderable 的泛型类。
我不确定如何传递泛型类的比较器。谢谢阿尔伯特
java - ConcurrentSkipListMap.compute() 对于相对更新是否安全?
ConcurrentSkipListMap.compute(K, BiFunction)的 Javadoc指出:
尝试计算指定键及其当前映射值的映射(如果没有当前映射,则为 null)。该函数不能保证以原子方式应用一次。
我知道该函数可能会被多次调用,但是“一次原子”指的是什么?
X = X + 1
具体来说,在不多次增加映射值的情况下调用函数是否安全?
java - 在 ConcurrentSkipListSet 中添加了重复项
我正在尝试维护 ConcurrentSkipListSet 中的插入顺序。添加的项目是具有 value(String) 和 index (int) 属性的自定义类类型。它实现了 Comparable 接口。该集合的行为非常不一致,有时会添加重复的项目。如果项目具有相同的值,则认为它们是重复的。
预期:通过 :[yyyy, bbbb, aaaa]
实际:失败:[yyyy, bbbb, yyyy, aaaa]
但如前所述,结果非常不一致。大多数时候,它都会过去。请告知可能是什么原因导致这种行为。'compareTo()' 方法错了吗?如果是这样,它应该总是失败。
理想情况下,我们也应该覆盖“equals()”方法。但从排序集的角度来看,这并不重要。
感谢你的帮助。
java - 不敏感的线程安全 Map 无法正常工作
我有 ConcurrentSkipListMap 具有不敏感的关键特征:
如果我第一次运行我的应用程序并将添加到地图用户请求,我完成了 --games.put("Oddmar", ...) --,如果用户在此之后将请求 --/game oddmar (odDmar 或其他)-- 它会起作用,但是.. 我总是在静态块的开始时从 json 文件加载我的地图:
如果在“重新启动”后用户将尝试 /game oddmar,它将不起作用 - 只有 /game Oddmar。但为什么?如果在应用程序中,我总是从我的变量(而不是文件)中读取地图。
java - ConcurrentSkipListMap 如何提供同步?
我很困惑 ConcurrentSkipListMap 如何提供同步。我在源代码中找不到同步块,也没有关于它是如何同步的文章或问题。
java - ConcurrentSkipListSet 如何拥有弱一致的迭代器?理解“弱一致”的含义
快速失败的迭代器迭代集合。如果集合在迭代时被修改,我们会得到异常。相反适用于故障安全,其中迭代发生在一个集合上,而写操作发生在它的副本上,因此这就是故障安全的工作方式(fe CopyOnWriteArrayList)。
有人可以解释一下 ConcurrentSkipListSet 如何具有故障安全功能吗?修改集合时没有副本(就像 CopyOnWrite 类一样),那么它是怎么发生的呢?我阅读是因为它的迭代器是弱一致的。我阅读了文档,我仍然不明白。(但我确实知道并发中的代码可见性或发生之前的关系是什么)。
有没有人有逻辑和易于记忆的解释,因为我是初学者?
//例子:
我期待在这里抛出 ConcurrentException ..请帮助:(
java - ConcurrentSkipListSet 内部工作,与 TreeSet 的区别
我理解的唯一区别是迭代器之间。SkipList
有弱一致,TreeSet
有快速失败。除此之外,我看不到任何同步方法SkipList
(尽管它在 Concurrent 包中)。
有人可以向我解释SkipList
当它没有任何同步时如何并发?它可以帮助我解决什么问题,除了迭代器之间的差异之外,我为什么还要使用它?
java - 线程安全地修改元素
我有下面的代码,添加看起来对我来说是线程安全的。modifyelement 怎么样,或者我怎样才能使这个线程安全?