线程安全树

时间:2011-12-01 22:20:36

标签: java multithreading

Java中是否存在线程安全的树实现?我发现了一些建议在添加和删除方法周围使用synchronized()的信息,但我有兴趣看看是否有任何内置于Java中的内容。

修改:我正在尝试使用Octree。我正在学习,但我正在使用这个项目来学习多线程和空间索引,所以这里有很多新主题。如果有人有一些特别好的参考资料,请分享。

3 个答案:

答案 0 :(得分:5)

来自documentation for TreeMap

SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

请注意,这只会使每个调用同步。在许多情况下,这是应用程序的错误粒度,您最好在更高级别进行同步。请参阅docs for synchronizedSortedMap

答案 1 :(得分:0)

您可以使用Collections.synchronizedSet()synchronizedMap()围绕各个方法添加同步,但线程安全性实际上不是数据结构的属性,而是应用程序的属性。如果迭代树,或者做一系列需要原子化的操作,那么包装器就不够了。

答案 2 :(得分:0)

java.util.concurrent.ConcurrentSkipListMap可能会引起关注。对于大多数用途来说这是过度的,但是如果你需要细粒度的同步,那就没什么可比的了。而矫枉过正则会导致不足。当然,它不是一棵树,而是做同样的工作。我不相信你可以在真正的树中获得低级同步。