juc并发包系列
解析java并发包核心组件的原理和源码
猿类人生
这个作者很懒,什么都没留下…
展开
-
StampedLock相对于ReentrantReadWriteLock性能提升的原理
StampedLock比ReentrantReadWriteLock性能更好,主要体现在以下几个方面: 1、增加乐观读功能,减少写线程饥饿现象出现 2、StampedLock要比ReentrantReadWriteLock消耗小 3、StampedLock增加了更多的无锁操作,使线程间阻塞减少到最小。 那么它为什么能做到这些呢? 主要实现的逻辑就是: 1、写状态每写一次增加一次值,可以通过比较两次...原创 2019-10-18 09:49:27 · 780 阅读 · 0 评论 -
jdk1.8中ConcurrentHashMap的并发原理
ConcurrentHashMap的并发原理 我们都知道jdk1.8之前ConcurrentHashMap是采用分段锁的机制允许多线程并发操作一个ConcurrentHashMap的方式来提高并发的,它的主要思想是优化HashTable中全局锁,让锁更加细粒度来达到更高的并发度的。 但是JDK1.8里面的ConcurrentHashMap则完全不一样,它用到了CAS思想,使用的是乐观锁思想,乐观锁...原创 2019-10-12 18:20:40 · 1799 阅读 · 0 评论 -
关于ThreadLocal的几点误区
关于ThreadLocal的几点误区 我们都知道遇到线程安全问题时可以用ThreadLocal来解决。但是关于这个类,很多人都存在一些误区。 误区一:ThreadLocal就是一个map,key就是线程相关的参数,value就是要存放的数据。 误区二:一个线程对应一个ThreadLocal,重复设置值会被覆盖。 先看一个例子: public class ThreadLocalTest { ...原创 2019-10-11 12:28:00 · 1140 阅读 · 0 评论 -
HashMap源码解析
本文主要通过分析HashMap的各个字段的意义,常用方法的大致逻辑来大致了解HashMap的源码。 一、HashMap的主要字段 1、hashmap中有一个静态内部类Node,其结构并不复杂,下面情况它的代码: static class Node<K,V> implements Map.Entry<K,V> { final int hash; ...原创 2019-10-11 11:24:14 · 139 阅读 · 0 评论