2014-09-02 29 views
0

什麼是列表實現是線程安全高性能java中的優化線程安全列表

通過高性能我的意思是,我有很多列表讀取接入和幾個寫訪問。 所以我需要一個使用ReadWriteLock的List實現。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReadWriteLock.html

ReadWriteLock中:讀取鎖可以同時被多個 讀線程舉行,只要沒有作家。寫鎖定是獨家的 。

+0

查看['java.util.concurrent']中的集合(http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html) – 2014-09-02 19:00:12

回答

3

什麼是線程安全和高性能的List實現?

的CopyOnWriteArrayList矢量是列表的線程安全的實現。

其中2個CopyOnWriteArrayList被認爲是高性能的,因爲在許多讀取訪問中只需很少的寫入操作即可完成。它也在內部使用ReentrantLock。注意: - 在CopyOnWriteArrayList的情況下,所有可變操作(add,set等)都是通過創建底層數組的新副本來實現的,這就是爲什麼只有在多次讀訪問時才應該使用它,而且非常很少有寫入權限。 API

1

如果您需要一些寫入權限和大量的讀取權限,那麼我會建議CopyOnWriteArrayList。這很昂貴,因爲每個更改都會導致創建新的List對象。但是,如果你的清單不是很大,並且你的主要焦點是閱讀,那麼它可能是最好的解決方案。