线程安全和效果的列表实现是什么?
按性能我的意思是,我有一个列表,其中包含多次读取访问权限和少量写入访问权限。 所以我需要一个使用ReadWriteLock的List实现。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReadWriteLock.html
ReadWriteLock:读锁可以由多个同时保持 读者线程,只要没有作家。写锁是 排他性的。
答案 0 :(得分:3)
什么是线程安全和高性能的List实现?
CopyOnWriteArrayList 和 Vector 是List的线程安全实现。
在这些中,CopyOnWriteArrayList被认为是高性能的,在这种情况下,许多读取访问都是通过很少的写入操作完成的。在内部它也使用ReentrantLock。
注意: - 在CopyOnWriteArrayList的情况下,所有的变异操作(添加,设置等)都是通过制作底层数组的新副本来实现的,这就是为什么只有在多次读访问时才使用它的原因很少写入权限。 API
答案 1 :(得分:1)
如果您需要一些写访问权限和大量读取权限,那么我建议CopyOnWriteArrayList。这很昂贵,因为每次更改都会导致创建新的List对象。但是如果你的列表不是很大而且主要关注的是阅读,那么它可能是最好的解决方案。