问题标签 [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.

0 投票
0 回答
88 浏览

java - Java ConcurrentSkipListMap 条目锁定在导航上

当与客户端提供的 Map 一起使用时,下面的类似乎卡在方法 lrPoints 中。到目前为止的结论是,要么 lrPoint 正在运行无限循环,要么存在死锁。我无法重现该错误,但可以通过阅读日志来确保永远不会退出 lrPoints 方法。

更重要的是,“get”方法返回正常。此映射是否正确构建以防止客户端锁定?这种方法可能失败还有其他原因吗?

编辑。添加更多日志记录并更改为 TreeMap 之后。我现在看到的问题是静态构造方法 Pair.of(.,.)。这种静态初始化程序是否有可能导致死锁?

0 投票
0 回答
83 浏览

java - ConcurrentSkipListMap 添加泛型类中定义的比较器

我有这堂课:

现在我想创建一个 ConcurrentSkipListMap 作为我在 Orderable 类中定义的 Comparator 传递。目标是使用 V 的比较器保持 ConcurrentSkipListMap 有序,其中 V 是扩展 Orderable 的泛型类。

我不确定如何传递泛型类的比较器。谢谢阿尔伯特

0 投票
1 回答
165 浏览

java - ConcurrentSkipListMap.compute() 对于相对更新是否安全?

ConcurrentSkipListMap.compute(K, BiFunction)的 Javadoc指出:

尝试计算指定键及其当前映射值的映射(如果没有当前映射,则为 null)。该函数不能保证以原子方式应用一次。

我知道该函数可能会被多次调用,但是“一次原子”指的是什么?

X = X + 1具体来说,在不多次增加映射值的情况下调用函数是否安全?

0 投票
4 回答
466 浏览

java - 在 ConcurrentSkipListSet 中添加了重复项

我正在尝试维护 ConcurrentSkipListSet 中的插入顺序。添加的项目是具有 value(String) 和 index (int) 属性的自定义类类型。它实现了 Comparable 接口。该集合的行为非常不一致,有时会添加重复的项目。如果项目具有相同的值,则认为它们是重复的。

预期:通过 :[yyyy, bbbb, aaaa]

实际:失败:[yyyy, bbbb, yyyy, aaaa]

但如前所述,结果非常不一致。大多数时候,它都会过去。请告知可能是什么原因导致这种行为。'compareTo()' 方法错了吗?如果是这样,它应该总是失败。

理想情况下,我们也应该覆盖“equals()”方法。但从排序集的角度来看,这并不重要。

感谢你的帮助。

0 投票
0 回答
87 浏览

java - 具有复杂对象作为包含列表的值的无锁 ConcurrentSkipListMap

我正在开发一个程序,其中有多个线程访问存储在类中的 Map Problem。这个映射,对于“值”,包含一个对象(Slot),其中包含一个名称和一个List实例Car

所以,我的问题是:

由于由不同线程访问的第一个映射是线程安全的,我需要一个线程安全列表来存储内部列表Slot还是使用ArrayList? 请注意,这CarAtomicReference我使用的关键区域compareAndSet()

显示问题的简单图表:

在此处输入图像描述

谢谢你。

0 投票
1 回答
30 浏览

java - 不敏感的线程安全 Map 无法正常工作

我有 ConcurrentSkipListMap 具有不敏感的关键特征:

如果我第一次运行我的应用程序并将添加到地图用户请求,我完成了 --games.put("Oddmar", ...) --,如果用户在此之后将请求 --/game oddmar (odDmar 或其他)-- 它会起作用,但是.. 我总是在静态块的开始时从 json 文件加载我的地​​图:

如果在“重新启动”后用户将尝试 /game oddmar,它将不起作用 - 只有 /game Oddmar。但为什么?如果在应用程序中,我总是从我的变量(而不是文件)中读取地图。

0 投票
0 回答
68 浏览

java - ConcurrentSkipListMap 如何提供同步?

我很困惑 ConcurrentSkipListMap 如何提供同步。我在源代码中找不到同步块,也没有关于它是如何同步的文章或问题。

0 投票
1 回答
203 浏览

java - ConcurrentSkipListSet 如何拥有弱一致的迭代器?理解“弱一致”的含义

快速失败的迭代器迭代集合。如果集合在迭代时被修改,我们会得到异常。相反适用于故障安全,其中迭代发生在一个集合上,而写操作发生在它的副本上,因此这就是故障安全的工作方式(fe CopyOnWriteArrayList)。

有人可以解释一下 ConcurrentSkipListSet 如何具有故障安全功能吗?修改集合时没有副本(就像 CopyOnWrite 类一样),那么它是怎么发生的呢?我阅读是因为它的迭代器是弱一致的。我阅读了文档,我仍然不明白。(但我确实知道并发中的代码可见性或发生之前的关系是什么)。

有没有人有逻辑和易于记忆的解释,因为我是初学者?

//例子:

我期待在这里抛出 ConcurrentException ..请帮助:(

0 投票
1 回答
313 浏览

java - ConcurrentSkipListSet 内部工作,与 TreeSet 的区别

我理解的唯一区别是迭代器之间。SkipList弱一致TreeSet快速失败。除此之外,我看不到任何同步方法SkipList(尽管它在 Concurrent 包中)。

有人可以向我解释SkipList当它没有任何同步时如何并发?它可以帮助我解决什么问题,除了迭代器之间的差异之外,我为什么还要使用它?

0 投票
1 回答
33 浏览

java - 线程安全地修改元素

我有下面的代码,添加看起来对我来说是线程安全的。modifyelement 怎么样,或者我怎样才能使这个线程安全?