Java原理分析
TigRer
探索未来的程序汪
展开
-
LongAdder相关
JDK8系列之LongAdder解析LongAdder面试转载 2021-03-29 23:07:06 · 107 阅读 · 0 评论 -
HashMap底层分析
HashMap集合的数据结构-存储过程HashMap<String, Integer> hashMap = new HashMap<>();hashMap.put("张三",18);hashMap.put("李四",18);hashMap.put("张三",20);1、当创建HashMap集合对象时,在jdk1.8之前,构造方法中创建了一个 长度为16的Entry[] table 用来存储键值对数据;在jdk1.8之后,不是在构造方法底层创建数组了,而是在第一次调用put原创 2021-03-25 21:09:53 · 118 阅读 · 4 评论 -
共享模型之无锁(CAS原理)
1 问题提出有如下需求,保证 account.withdraw 取款方法的线程安全原有实现并不是线程安全的为什么不安全?withdraw方法对应的字节码:单核的指令交错多核的指令交错解决思路-锁首先想到的是给 Account 对象加锁解决思路-无锁2 CAS 与 volatile前面看到的 AtomicInteger 的解决方法,内部并没有用锁来保护共享变量的线程安全。那么它是如何实现的呢?其中的关键是 compareAndSet,它的简称就是 CAS (也有 Co原创 2020-09-06 10:02:01 · 209 阅读 · 0 评论 -
volicate原理
内存屏障(Memory Barrier(Memory Fence))可见性写屏障(sfence)保证在该屏障之前的,对共享变量的改动,都同步到主存当中而读屏障(lfence)保证在该屏障之后,对共享变量的读取,加载的是主存中最新数据有序性写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前volatile 原理volatile 的底层实现原理是内存屏障,Memory Barrier(Memory Fen原创 2020-09-05 10:37:49 · 965 阅读 · 0 评论 -
Synchronized原理
Monitor 原理Synchronized原理 static final Object lock = new Object(); static int counter = 0; public static void main(String[] args) { synchronized (lock) { counter++; }}对应的字节码为:public static void main(java.lang.String[]); descriptor: ([Ljava/原创 2020-09-04 09:09:26 · 275 阅读 · 0 评论