我们是否有支持基于索引访问的ArrayList的线程安全版本?用于索引访问的线程安全集合
我无法在并发包中找到ArrayList的对应部分,就像我们为LinkedList(ConcurrentLinkedQueue)所做的那样。 阻塞版本不适合我的目的。
我需要创建一个线程安全'排序'arraylist - 希望通过继承一个可用的香草线程安全版本。
我们是否有支持基于索引访问的ArrayList的线程安全版本?用于索引访问的线程安全集合
我无法在并发包中找到ArrayList的对应部分,就像我们为LinkedList(ConcurrentLinkedQueue)所做的那样。 阻塞版本不适合我的目的。
我需要创建一个线程安全'排序'arraylist - 希望通过继承一个可用的香草线程安全版本。
虽然不推荐使用,但您可以使用Vector来解决所有令人头疼的问题。
除非你想达到的性能增益的每一位,下面应该在大多数情况下工作:
Collections.synchronizedList(new ArrayList<SomeType>())
您可以使用CopyOnWriteArrayList如果迭代是一个很多比修改更频繁。
在CopyonWrite或继承类上排序不会工作 - 它会导致O(N)交换/设置 - 这对性能会造成很大的影响 – IUnknown 2013-04-20 16:53:59
您需要将CopyOnWriteArrayList初始化为排序状态。那时如果列表插入/删除不经常发生,那么你可能会获得比同步ArrayList更好的性能;如果插入/删除频繁,那么性能将成为垃圾。 – 2013-04-20 16:59:51
也会带来所有的性能开销 – IUnknown 2013-04-20 05:08:58