JAVA并发容器源码分析
JAVA并发容器源码分析【一】开篇 JAVA并发容器源码分析【二】ConcurrentHashMap源码翻译之类注释与综述部分 JAVA并发容器源码分析【二】ConcurrentHashMap源码翻译之基础 JAVA并发容器源码分析【二】C...
JAVA并发容器源码分析【一】开篇 JAVA并发容器源码分析【二】ConcurrentHashMap源码翻译之类注释与综述部分 JAVA并发容器源码分析【二】ConcurrentHashMap源码翻译之基础 JAVA并发容器源码分析【二】C...
文章首发于:clawhub.club 基于JDK8,LinkedBlockingQueue源码翻译 /** * An optionally-bounded {@linkplain BlockingQueue blocking queue} ...
文章首发于:clawhub.club 简单介绍一下LinkedBlockingQueue中API的源码,如构造方法,新增,获取,删除,drainTo。 构造函数 LinkedBlockingQueue有三个构造方法,其中无参构造尽量少用,因...
文章首发于:clawhub.club 定义与性质 LinkedBlockingQueue是一个阻塞队列,内部由两个ReentrantLock来实现出入队列的线程安全,由各自的Condition对象的await和signal来实现等待和唤醒功...
文章首发于:clawhub.club 特点 是先进先出队列FIFO。 采用ReentrantLock保证线程安全 功能 增加 增加有三种方式,前提:队列满 方式 put add offer 特点 一直阻塞 抛异常 返回false 删除 删除...
文章首发于:clawhub.club 定义 CopyOnWrite容器即写时复制的容器。 当我们往容器添加元素的时候,先将当前容器进行Copy,复制出一个新的容器, 然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。 C...
文章首发于:clawhub.club 基于JDK1.8的CopyOnWriteArrayList的简单翻译: /** * A thread-safe variant of {@link java.util.ArrayList} in whi...
文章首发于:clawhub.club 扩容触发条件: treeifyBin方法中将链表转换成红黑树时判断table数组的长度是否小于阈值(64),如果小于就进行扩容而不是树化。 putAll方法中,会根据size大小扩容。 putVal在计...
文章首发于:clawhub.club JDK8的ConcurrentHashMap的初始化源码及注释: /** * Initializes table, using the size recorded in sizeCtl. * 使用siz...
文章首发于:clawhub.club 计数操作,并发情况下好复杂。 JDK8ConcurrentHashMap在插入和删除的情况下都会调用addCount方法: /** * Adds to count, and if table is to...
文章首发于:clawhub.club replaceNode方法 /** * Implementation for the four public remove/replace methods: * Replaces node value ...
文章首发于:clawhub.club 基于JDK8的ConcurrentHashMap中的putVal源码及注释: /** Implementation for put and putIfAbsent * 实现put和putIfAbsent...
文章首发于:clawhub.club 先贴一段代码,根据源码分析ConcurrentHashMap中的get方法: /** * Returns the value to which the specified key is mapped, ...
文章首发于:clawhub.club ConcurrentHashMap中有大量的CAS操作,tabAt、casTabAt、setTabAt是用来实现CAS的方法。 在这只是简单的学习了解,不做深层次的学习,比如为啥用sun.misc.Un...
文章首发于:clawhub.club ConcurrentHashMap的数据结构奠定了其高并发编程中的作用。其基本的数据结构还是离不开其本源HashMap。比如JDK8中他们同样用了数组+链表+红黑树,只不过在ConcurrentHash...