java中优化的线程安全列表

时间:2014-09-02 18:47:04

标签: java multithreading list locking

线程安全效果的列表实现是什么?

按性能我的意思是,我有一个列表,其中包含多次读取访问权限和少量写入访问权限。 所以我需要一个使用ReadWriteLock的List实现。

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

  

ReadWriteLock:读锁可以由多个同时保持   读者线程,只要没有作家。写锁是   排他性的。

2 个答案:

答案 0 :(得分:3)

什么是线程安全和高性能的List实现?

CopyOnWriteArrayList Vector 是List的线程安全实现。

在这些中,CopyOnWriteArrayList被认为是高性能的,在这种情况下,许多读取访问都是通过很少的写入操作完成的。在内部它也使用ReentrantLock。

注意: - 在CopyOnWriteArrayList的情况下,所有的变异操作(添加,设置等)都是通过制作底层数组的新副本来实现的,这就是为什么只有在多次读访问时才使用它的原因很少写入权限。 API

答案 1 :(得分:1)

如果您需要一些写访问权限和大量读取权限,那么我建议CopyOnWriteArrayList。这很昂贵,因为每次更改都会导致创建新的List对象。但是如果你的列表不是很大而且主要关注的是阅读,那么它可能是最好的解决方案。

相关问题