03 2021 档案
摘要:1 介绍 参考: https://segmentfault.com/a/1190000016058789 和 https://blog.csdn.net/anlian523/article/details/106598910。 AQS 有两个队列,双向的 CLH 队列 sync queue 和单向的
阅读全文
摘要:@ 1 介绍 上一篇文章,讲了独占锁,AQS(一)独占锁(基于JDK 8),本篇只讲共享锁。 某些共享锁使用的方法在独占锁中已经出现了,不再介绍,请读者自行去上面查看。 在 Semaphore 中,acquire 调用的是 acquireSharedInterruptibly,release 调用的
阅读全文
摘要:@ 1 介绍 在开始之前,先推荐一本书和两个博客,书是《Java并发实现原理:JDK源码剖析_出版社 电子工业出版社; 第1版》,可从我同名公众号下载。博客是 https://segmentfault.com/a/1190000016058789 和 https://blog.csdn.net/an
阅读全文
摘要:LongAdder 和 LongAccumulator 基本一致,区别在于前者默认是加法,后者会同时传入一个表达式,具体结果是通过二元表达式计算得到的。 DoubleAdder 和 DoubleAccumulator 没有做什么,只是使用 Double.longBitsToDouble 和 Doub
阅读全文
摘要:@ 在 atomic 包中,有三个 Reference 相关的类:AtomicReference,AtomicStampedReference,AtomicMarkableReference。 AtomicReference 无法解决 ABA 问题,而后面的两个类特别是 AtomicStampedR
阅读全文
摘要:我是用 markdown 写的,富文本不清楚,大家可以试一下。 根据我的实验,发现上传图片时有时候有水印,有时候没有水印。 1.有水印是这样 与CAS 成员变量 value 是 volatile 的,保证可见性。Volatile 介绍 p
阅读全文
摘要:在 Oracle JDK 8 中,找不到 unsafe.java,在 idea 中只能由 unsafe.class 反编译得到一个 unsafe.java。 解压openjdk-8u41-src-b04-14_jan_2020.zip,查看 .\openjdk\jdk\src\share\class
阅读全文
摘要:在 Oracle JDK 8 中,找不到 unsafe.java,在 idea 中只能由 unsafe.class 反编译得到一个 unsafe.java。 解压openjdk-8u41-src-b04-14_jan_2020.zip,查看 .\openjdk\jdk\src\share\class
阅读全文
摘要:@ 本文主要参考 《Java并发编程的艺术》以及一些博客 1 介绍 如果一个变量用了volatile修饰,那么这个变量是对所有线程共享的、可见的,每次jvm都会读取最新写入的值并使其最新值在所有CPU可见。 当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效。线程接下来将从主内存
阅读全文