Java并发的集合.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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精品文档

相关文档