java
qq_42894696
这个作者很懒,什么都没留下…
展开
-
偏向锁、轻量级锁、重量级锁
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是...转载 2018-12-07 10:22:59 · 193 阅读 · 0 评论 -
volatile关键字
1.多核心cpu下线程并发会带来的三大问题:原子性/可见性/有序性 2.原子性问题:i++操作不是原子性:lock、unlock、read、load、assign、use、store、 write(JMM8个指令可以解释) 3.可见性问题:cpu为提高效率各自有自己的缓冲区L1和L2,对数据各自有各自的备份,每次更改玩数据不会立即写回主内存 4.有序性问题:由于cpu对指令会进行优化(满足as...原创 2019-05-11 19:40:29 · 92 阅读 · 0 评论 -
HashSet、TreeSet、LinkedHashSet、HashMap、LinkedHashMap
1.实现Set接口,或者Set接口的子类 2.无序、不重复 3.TreeSet是SortedSet的唯一实现类,实现了经过排序的Set 4.HashSet实现原理是里面维护了一个HashMap,每一个元素在插入HashSet的时候,会把元素作为key,静态变量Object object = new Object()作为value插入hashMap,所以hashSet其实就是hashMap 5.Tr...原创 2019-04-18 10:47:09 · 149 阅读 · 0 评论 -
LinkedHashMap如何维护元素插入顺序的
插入元素的时候,通过重写HashMap的newNode方法,创建自己元素节点Entry(继承HashMap的Node节点,并且每个Entry维护了前一个元素引用以及后一个元素引用) ...原创 2019-04-18 10:16:44 · 2208 阅读 · 0 评论 -
java对象生命周期
Java对象的生命周期 在Java中,对象的生命周期包含下面几个阶段: 1. 创建阶段(Created) 2. 应用阶段(In Use) 3. &nb...原创 2019-04-16 10:46:23 · 211 阅读 · 0 评论