我們是否有支持基於索引訪問的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