Java 用于索引访问的线程安全集合

Java 用于索引访问的线程安全集合,java,java.util.concurrent,Java,Java.util.concurrent,我们有支持基于索引访问的线程安全版本的ArrayList吗 我在并发包中找不到ArrayList的对应项,就像我们在LinkedList(ConcurrentLinkedQueue)中一样。 阻塞版本不适合我的用途 我需要创建一个线程安全的“排序”arraylist——希望通过继承一个可用的普通线程安全版本 尽管不推荐使用,但您可以通过使用解决方案来省去所有的麻烦。除非您想获得每一点性能提升,否则以下方法在大多数情况下都应该有效: Collections.synchronizedList(new

我们有支持基于索引访问的线程安全版本的ArrayList吗

我在并发包中找不到ArrayList的对应项,就像我们在LinkedList(ConcurrentLinkedQueue)中一样。 阻塞版本不适合我的用途


我需要创建一个线程安全的“排序”arraylist——希望通过继承一个可用的普通线程安全版本

尽管不推荐使用,但您可以通过使用解决方案来省去所有的麻烦。

除非您想获得每一点性能提升,否则以下方法在大多数情况下都应该有效:

Collections.synchronizedList(new ArrayList<SomeType>())
Collections.synchronizedList(新的ArrayList())

您可以使用if迭代比修改更频繁。

对CopyonWrite或继承的类进行排序不起作用-它将导致O(N)个交换/集-这将对性能造成很大的负担您需要将CopyOnWriteArrayList初始化为排序状态。在这一点上,如果列表插入/删除很少,那么您可能会比使用同步ArrayList获得更好的性能;如果频繁插入/删除,那么性能将是垃圾。我们正在寻找一个基于CAS的选项,如果有的话。另一个注意事项是,arraylist上的Collections.synchronizedList给了我们什么?这在vector中是不可用的?绝对没有。但从算法上讲,几乎肯定不会有更好的解决方案。@IUnknown我对向量知之甚少。但避免使用不推荐使用的库始终是一个好主意。由于某种原因,它们被弃用了