Java并发编程实践笔记之—并发容器(Concurrent Collections)
2015-02-02 20:40
579 查看
什么是并发容器
Java5.0提供针对多个线程并发访问设计的
改进同步容器的性能(同步容器将所有对容器状态的访问都串行化来实现线程安全,代价就是严重降低并发性)
Queue
用来保存一组待处理的元素几种实现:ConcurrentLinkedQueue, PriorityQueue, BlockingQueue(可阻塞,用在生产者-消费者模式中)
Queue和List的关系:虽然可以用List来模拟Queue的行为(事实上正是通过LinkedList来实现Queue的),但还需要一个Queue类,因为它能去掉List的随机访问需求从而实现更搞笑的并发
ConcurrentHashMap
代替HashMap回顾:同步容器HashMap的实现方式是:将每个方法都在同一个锁上同步并使得每次只能有一个线程访问容器
ConcurrentHashMap使用粒度更细的加锁机制来实现更大程度的共享——分段锁
任意数量的读取线程可以并发访问Map
执行读取操作的线程和执行写入操作的线程可以并发访问Map
一定数量的写入线程可以并发修改Map
ConcurrentHashMap的权衡:size和isEmpty这样的方法只是一个估计值,被换取了更重要的性能优化,包括get,put,containsKey,remove等
ConcurrentHashMap代替Map进一步提高代码的可伸缩性。只有当应用程序需要加锁Map进行独占访问时,才应该放弃用ConcurrentHashMap
ConcurrentMap接口:定义了原子“复合”操作(If-No-Add, Remove-If-Equal, Replace-If-Equal)
CopyOnWriteArrayList/Set
代替同步的List/SetCopy-On-Write指写入时复制,其安全型在于,只要正确地发布一个事实不变对象,在访问对象时就不再需要进一步的同步。在每次修改时,都会创建并重新发布一个新的容器副本
因为每次修改容器都会复制底层数组,需要一定开销,特别是当容器的规模较大的时候。所以仅当迭代操作远远多于修改操作的时候,才应该使用Copy-On-Write容器
相关文章推荐
- java并发编程实践笔记
- java并发编程实践笔记
- java并发编程实践笔记
- Java并发编程实践笔记之——原子性(Atomicity)
- java线程学习(二)—并发编程实践学习笔记
- java并发编程实践笔记
- Java并发编程实践笔记之——用锁来保护状态(Guarding State with Locks)
- Java并发编程实践笔记之—不变性(Immutability)
- Java并发编程实践阅读笔记
- java并发编程实践学习笔记
- JAVA 并发编程实践 - 原子变量与非阻塞同步机制 笔记
- Java并发编程实践笔记之—阻塞和中断方法(Blocking and Interruptible Methods)
- Java并发编程实践笔记之-并发简史
- 编程实践笔记{Java 线程 并发处理 Webservice}
- java并发编程实践笔记
- java并发编程实践笔记
- 编程实践笔记{Java 线程 并发处理 Webservice}(转)
- Java并发编程实践笔记
- JAVA并发编程实践笔记
- Java并发编程实践笔记(一)——chapter1(IO,连接,线程)