网站大量收购闲置独家精品文档,联系QQ:2885784924

Java并发的集合.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java并发的集合

Java并发集合 并发集合类 ConcurrentHashMap ConcurrentLinkedQueue ConcurrentSkipListMap ConcurrentSkipListSet CopyOnWriteArrayList CopyOnWriteArraySet ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue LinkedBlockingDeque LinkedTransferQueue DelayQueue SynchronousQueue ConcurrentHashMap ConcurrentHashMap是线程安全且高效的HashMap ConcurrentHashMap的锁分段技术 ConcurrentHashMap 定位Segment final SegmentK,V segmentFor(int hash) { return segments[(hash segmentShift) segmentMask]; } 定位HashEntry HashEntryK,V getFirst(int hash) { HashEntryK,V[] tab = table; return tab[hash (tab.length - 1)]; } ConcurrentHashMap JDK6, 7 JDK8 CopyOnWriteArrayList Copy-On-Write : 写时复制 线程安全的、并且读操作无锁的ArrayList 读写分离思想 读多,写少,批量写 CopyOnWriteArrayList CopyOnWriteArrayList 写操作会加锁,新建一个数组,替换原来的。 CopyOnWriteArrayList 读操作不加锁 CopyOnWriteArrayList COWIterator是阉割版的Iterator. 每次迭代的是一个snapshot,不支持remove,set和add CopyOnWriteArraySet private final CopyOnWriteArrayListE al; //add addAll public boolean add(E e) { return al.addIfAbsent(e); } 重写equals ArrayBlockingQueue 用数组实现的有界阻塞队列 公平锁和非公平锁 Condition ArrayBlockingQueue 构造函数,需要指定一个capacity,默认是非公平锁fair=false ArrayBlockingQueue 读写都加锁 ArrayBlockingQueue Iterator弱一致性 不会抛出ConcurrentModificationException LinkedBlockingQueue 用链表实现的有界阻塞队列 /** Lock held by take, poll, etc */ private final ReentrantLock takeLock = new ReentrantLock(); /** Wait queue for waiting takes */ private final Condition notEmpty = takeLock.newCondition(); /** Lock held by put, offer, etc */ private final ReentrantLock putLock = new ReentrantLock(); /** Wait queue for waiting puts */ private final Condition notFull = putLock.newCondition(); PriorityBlockingQueue 支持优先级的无界阻塞队列 private final PriorityQueueE q; private final ReentrantLock lock = new ReentrantLock(true); private final Condition notEmpty = lock.newCondition(); LinkedBlockingDeque 由链表结构组成的双向阻塞队列 可以运用在“工作窃取(work-stealing)”模式中 DelayQueue 支持延时获取元素的无界阻塞队列 : DelayQueueE extends Delayed private transient final ReentrantLock lock = new ReentrantLo

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档