我正在寻找一种实现并发树结构的有效方法.如果这有帮助,假设我有更多的阅读访问比更改结构.
树应该支持这些操作:
>添加和删除节点
>每次插入新节点时,都会对分支进行排序
>迭代所有节点(不带ConcurrentModificationException)
>按路径查找元素
解决方法
看看:
Concurrent-Trees在Google代码上修改树状结构而不锁定.
该项目为Java提供并发数组和后缀树.它们支持并发读取和写入,并且读取是无锁的.它通过以原子方式对树进行补丁来起作用.虽然这些类型的树可能不是你想要的,但是使用TreeDesign中所述的“修补”方法对于任何类型的树状结构都是有用的.
这些树旨在用于高并发读取 – 大多数情况,其中(例如)后台线程可能从树中插入或删除条目,而许多前台线程将继续遍历它,而不受修改的阻碍.