自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 并发编程——从源码看AQS

目录 一、什么是AQS? 二、自定义的不可重入锁 自定义同步器 自定义锁 三、Reentrantlock原理 Reentrantlock的结构图 非公平锁加锁 解锁 非公平锁的体现 可重入原理 公平锁和非公平锁的区别 条件变量实现原理 一、什么是AQS? 全称是AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 用state属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获...

2021-08-09 15:58:10 280

原创 并发编程——线程池

目录 一、为什么要使用线程池 二、自定义线程池 自定义任务队列 自定义线程池管理器 拒绝策略接口 测试(任务生产者) 总结流程 三、线程池 ThreadPoolExecutor 线程池状态 线程池的工作状态 四、Executors 类 newFixedThreadPool(固定大小的线程池) newCachedThreadPool(带缓冲工厂的线程池) newSingleThreadExecutor(单线程的线程池) ...

2021-08-08 17:42:53 518 1

原创 并发编程——不可变类

一、日期转换问题 一般使用的最多的是SimpleDateFormat,但是因为是不可变类,在多个线程操作共享变量的时候内部的数据会改变,造成线程安全问题,接下来看一下测试案例。 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i < 10; i++) {//运行10个线程 new Thread(() -> { try {

2021-08-07 19:37:20 382 2

原创 并发编程——共享模型之无锁

目录 一、并发编程无锁案例 无锁高效率 二、CAS(compareAndSet) CAS和volatile的关系 CAS的特点 三、ABA问题 解决 四、CAS操作的原子类 原子整数 原子引用 原子数组 字段更新器 原子累加器 五、原子累加器 原子累加器与原子整数的性能比较 六、原子累加器LongAdder原理 LongAdder类有几个关键域 CAS锁 伪共享 LongAdder源码 七、Unsafe Unsafe的CAS操作实现 一、并发编...

2021-08-07 02:05:35 561 2

原创 并发编程:共享模型之内存

Java内存模 JMM即Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着CPU寄存器、缓存、硬件内存、 CPU指令优化等。 JMM体现在以下几个方面 原子性-保证指令不会受到线程上下文切换的影响 可见性-保证指令不会受cpu缓存的影响 有序性-保证指令不会受cpu指令并行优化的影响 ...

2021-08-06 00:08:41 280 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除