
jdk并发容器
pois
这个作者很懒,什么都没留下…
展开
-
并发队列 – 有界阻塞队列 ArrayBlockingQueue 原理探究
并发队列 – 有界阻塞队列 ArrayBlockingQueue 原理探究http://www.importnew.com/25566.html一、 前言上节介绍了无界链表方式的阻塞队列LinkedBlockingQueue,本节来研究下有界使用数组方式实现的阻塞队列ArrayBlockingQueue二、 ArrayBlockingQueue类图结构如图ArrayBlockingQueue内部有...转载 2018-03-08 10:55:59 · 235 阅读 · 0 评论 -
java 7 与 java 8 的HashMap和ConcurrentHashMap
http://www.importnew.com/28263.html原文出处: JavaDoop今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把...转载 2018-04-10 23:49:42 · 188 阅读 · 0 评论 -
解惑如何保证数组元素的可见性
https://mp.weixin.qq.com/s?__biz=MzIwMzY1OTU1NQ==&mid=2247484057&idx=1&sn=c5fb63c68203001fa3a0545cef6c0e06&chksm=96cd42d5a1bacbc325759048d6149d49f8c918d8201026fbb1388e1b8f5247d5a147a9e...转载 2018-04-05 17:09:46 · 685 阅读 · 1 评论 -
基于BQ及CLQ的消费者模型
参考:http://blog.youkuaiyun.com/silyvin/article/details/79482885http://blog.youkuaiyun.com/silyvin/article/details/79490605原创 2018-03-11 13:08:22 · 200 阅读 · 0 评论 -
ConcurrentMap.putIfAbsent(key,value) 用法讨论
http://wxl24life.iteye.com/blog/1746794先看一段代码:Java代码 public class Locale { private final static Map<String, Locale> map = new HashMap<String,Locale>(); public static Locale getI...转载 2018-01-18 12:31:43 · 570 阅读 · 0 评论 -
jdk并发容器整理(yet)
1.CopyOnWrite写少读多的场景读-读 读-写 写-读 不阻塞写-写阻塞写时复制,为什么复制?为了迭代器等遍历读操作的安全与性能,同Stringset中看似比较多余的一句,背后的目的是什么,涉及到happens-before,多线程下volatile防止指令重排,确保可见性数据读,总量读,迭代器符合最终一致性2.ConcurrentLinkedQueue无界,线程安全的LinkedLi...原创 2018-03-01 08:35:22 · 197 阅读 · 0 评论 -
由CopyOnWriteArrayList类的set方法引发对volatile深入理解
转载自:http://ifeve.com/copyonwritearraylist-set/ http://ifeve.com/java-memory-model-4/ http://tech.meituan.com/java-memory-reordering.html 在CopyOnWriteArrayList类的set方法中有一...转载 2018-02-28 23:48:19 · 316 阅读 · 0 评论 -
CopyOnWriteArrayList 的set为什么要复制?扩容为什么一个一个来,而不是1.5倍
扩容可以理解,set为什么要复制?参考:CopyOnWriteArray的使用ArrayList 的一个线程安全的变体,其中所有可变操作(添加、设置,等等)都是通过对基础数组进行一次新的复制来实现的。 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法...转载 2018-02-28 23:34:11 · 2834 阅读 · 0 评论 -
一个ConcurrentLinkedQueue实现生产者消费者模型的例子
生产者消费者问题【线程中ConcurrentLinkedQueue】http://blog.youkuaiyun.com/ItJavawfc/article/details/50423595项目需求:在顶层网络请求的地方捕获到项目中的每个网络请求的异常【生产】后需要将请求错误的日志报告给服务器【消费】。 思路:需要线程、不断的扫描网络请求是否有异常的消息-->有我就执行,没有等待--》很多的网...转载 2018-03-08 21:52:10 · 1589 阅读 · 0 评论 -
copyonwrite arraylist
(一 mysql mvcc)有点像mysql的mvcc,给你个历史数据,我写的时候加锁,确保最终一致性读-快照读 写-当前读(二 ReadWriteLock)与jdk读写锁有一些区别jdk读写锁 读与写相互阻塞,仅读读不阻塞而这个读不阻塞写,写不阻塞读,仅写写阻塞ReadWriteLock是强一致,这个是最终一致提两个问题:1.为什么要复制,写时加锁不就完了吗2.扩容为什么+1扩,而不是像Ar...转载 2018-02-28 22:52:32 · 241 阅读 · 0 评论 -
LinkedBlockingQueue与ArrayBlockingQueue 区别
http://blog.youkuaiyun.com/javazejian/article/details/77410889深入剖析java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueueLinkedBlockingQueue和ArrayBlockingQueue迥异通过上述的分析,对于LinkedBlockingQueue和ArrayBlockingQueue的基本...转载 2018-03-08 13:06:13 · 4182 阅读 · 0 评论 -
BlockingQueue(阻塞队列)详解(一个生产者消费者的实例)
BlockingQueue(阻塞队列)详解注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带...转载 2018-03-08 12:55:18 · 12007 阅读 · 0 评论 -
并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究
并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究http://www.importnew.com/25668.html一、 前言常用的并发队列有阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好,下面就看看常用的非阻塞ConcurrentLinkedQueue是如何使用CAS实现的。二、 ConcurrentLinked...转载 2018-03-08 11:07:19 · 193 阅读 · 0 评论 -
并发队列 – 无界阻塞队列 LinkedBlockingQueue 原理探究
并发队列 – 无界阻塞队列 LinkedBlockingQueue 原理探究http://www.importnew.com/25583.html一、前言前面介绍了使用CAS实现的非阻塞队列ConcurrentLinkedQueue,下面就来介绍下使用独占锁实现的阻塞队列LinkedBlockingQueue的实现二、 LinkedBlockingQueue类图结构如图LinkedBlocking...转载 2018-03-08 11:05:08 · 502 阅读 · 0 评论 -
ConcurrentHashMap是弱一致的
深入剖析ConcurrentHashMap(1)http://ifeve.com/java-concurrent-hashmap-1/http://ifeve.com/concurrenthashmap-weakly-consistent/总结:ConcurrentHashMap的弱一致性主要是为了提升效率,是一致性与效率之间的一种权衡。要成为强一致性,转载 2018-04-10 23:58:39 · 184 阅读 · 0 评论