2014-09-02 24 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对象。但是,如果你的清单不是很大,并且你的主要焦点是阅读,那么它可能是最好的解决方案。