Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-atomic 原子类框架 AtomicInteger AtomicInteger即进行原子操作,CAS,有关CAS的可以详细再去查一查,涉及到C,汇编,硬件层面了,该类主要运用于多线程下的变量修改 主要涉及其自增,自加,set相关方法,适用场景:适合快速变量操作的场景,最简单的例子:比如统记网站访问人数,延申:自旋锁 public class AtomicInteger…
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-collections 集合框架 ConcurrentHashMap ConcurrentHashMap 是线程安全的,用法和HashMap基本一致,原理部分可参考以下文章: 源码分析 ConcurrentSkipListSet ConcurrentSkipListSet是对ConcurrentHashMap 的一个补充,有点像TreeMap,LinkedHashMap…
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-sync 同步器框架 同步器名称 作用 CountDownLatch 倒数计数器,构造时设定计数值,当计数值归零后,所有阻塞线程恢复执行:其内部实现了AQS框架 CyclicBarrier 循环栅栏,构造时设定等待线程数,当所有线程都到达栅栏后,栅栏放行:其内部通过ReentrantLock和Condition实现同步 Semaphore 信号量,类似于"令牌"…
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-locks 锁框架 接口说明 Lock接口 类型 名称 void lock() void lockInterruptibly () Condition newCondition() boolean tryClock() boolean tryClock(Long time, TimeUnit unit) void unlock() lock()方法类似于使用synchr…
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! 主要内容: juc-executors 执行器框架 juc-locks 锁框架 juc-atomic 原子类框架 juc-sync 同步器框架 juc-collections 集合框架 总览: juc-executors 执行器框架 Executors框架基本概述 ScheduledExecutorService // ScheduledExecutorService其实属于上…
1 Atomic 原子类介绍 Atomic 翻译成中文是原子的意思.在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的.在我们这里 Atomic 是指一个操作是不可中断的.即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰. 所以,所谓原子类说简单点就是具有原子/原子操作特征的类. 并发包 java.util.concurrent 的原子类都存放在java.util.concurrent.atomic下,如下图所示. 根据操作的数据类型,可以将JUC包中…
1 Atomic原子类介绍 2 基本类型原子类 3 数组类型原子类 4 引用类型原子类 5 对象的属性修改类型原子类…
精彩理解:  https://www.jianshu.com/p/21be831e851e ;  https://blog.csdn.net/heyutao007/article/details/19975665 ; 备选参考:https://blog.csdn.net/tanga842428/article/details/52742698: https://www.cnblogs.com/yitong0768/p/4555445.html : CAS有3个操作数,内存值V,旧的预期值A,要修…
Atomic原子类 Atomic原子类位于并发包java.util.concurrent下的java.util.concurrent.Atomic中. 1. 原子更新基本类型类 使用原子方式更新基本数据类型,Atomic提供以下3个类 AtomicInteger:原子更新整型 AtomicBoolean:原子更新布尔型 AtomicLong:原子更新长整型 以AtomicInteger为例进行介绍: // 获取index = i位置元素的值 public final int get(int i)…
目录 JUC包-原子类 为什么需要JUC包中的原子类 原子类原理(AtomicInteger为例) volatile CAS CAS的缺点 ABA问题 什么是ABA问题 ABA问题的解决办法 JUC包-原子类 为什么需要JUC包中的原子类 首先,一个简单的i++可以分为三步: 读取i的值 计算i+1 将计算出i+1赋给i 这就无法保证i++的原子性,即在i++过程中,可能会出现其他线程也读取了i的 值,但读取到的不是更改过后的i的值. 原子类原理(AtomicInteger为例) 原子类的原子性…