摘要:
@ 1 介绍 前置知识,可以看AQS(一)独占锁(基于JDK 8) ReentrantLock 是一个可重入的独占锁。 在独占模式中,isHeldExclusively 为 true 表示是对当前线程加锁,false 表示未加锁或者对其他线程加锁。 加锁状态由 state 标识,如果为0,则说明未加 阅读全文
摘要:
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.有水印是这样 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210314191844618.jpg?x-oss-process=im 阅读全文
摘要:
起初我看的是韩顺平老师的各种配置,现在那个视频已经不存在了,可以看别人截的屏。 老师用的是 Oracle JDK 8,我发现很多类看不到,所以导入了 OpenJDK8,记录一下整个配置过程。 我安装的是 JDK8,但是导入 OpenJDK 一样没有问题。 可以在我的公众号获取OpenJDK:Java 阅读全文
摘要:
@ AtomicIntegerArray 可以原子的更新 int[] 中某个对象。 在找到数组第0个对象的偏移量之后,由于数组中每个对象是顺序排放的,可以根据对象大小计算出数组中某索引的偏移量,然后通过 Unsafe 相关的方法来获取或者修改。 1 偏移量的计算 假设数组中第 0 个对象的在数组中的 阅读全文
摘要:
@ 1 介绍 AtomicIntegerFieldUpdater 是将某个类 T 的某个 int 属性包装一下,使得该属性能够在多线程中保持原子性。具体使用可见第三节。 有如下的要求: 只能修改对于其可见的字段; 目标类的操作字段必须被volatile关键字修饰; 目标类的操作字段不能被static 阅读全文