Java 并发
文章平均质量分 96
_CX_
宏愿纵未了,奋斗总不太晚
展开
-
Java抽象队列同步器源码分析(AQS)
文章目录AQS1. AQS 概述2. AQS 的数据结构3. 资源共享模式4. AQS 的主要源码解析4.1 获取资源4.2 释放资源深入理解 synchronized 关键字(关于对象头和锁的升级)深入理解 volatile 关键字(内存屏障和指令重排问题)AQS1. AQS 概述AQS是 AbstractQueuedSynchronizer 的简称,即 抽象队列同步器 ,从字⾯意思上理解:抽象:抽象类,只实现⼀些主要逻辑,有些⽅法由⼦类实现;队列:使⽤先进先出(FIFO)队列存储数据;原创 2022-03-06 15:11:12 · 634 阅读 · 0 评论 -
Java线程池原理及其执行过程源码分析
文章目录Java线程池原理及其执行过程源码分析1. 为什么要使用线程池2. 线程池的原理2.1 ThreadPoolExecutor 的构造方法2.2 ThreadPoolExecutor的策略2.3 线程池主要的任务处理流程2.4 ThreadPoolExecutor如何做到线程复⽤的?3. 四种常见线程池3.1 newCachedThreadPool3.2 newFixedThreadPool3.3 newSingleThreadExecutor3.4 newScheduledThreadPoolJa原创 2022-03-06 15:09:47 · 744 阅读 · 0 评论 -
深入理解 synchronized 关键字(关于对象头和锁的升级)
文章目录synchronized 关键字1. 概述2. synchronized 的四种锁状态2.1 Java对象头2.2 偏向锁2.3 轻量级锁2.4 重量级锁2.5 总结锁的升级流程2.6 各个锁的优缺点对比深入理解 volatile 关键字synchronized 关键字1. 概述⾸先需要明确的⼀点是:Java多线程的锁都是基于对象的,Java中的每⼀个对象都可以作为⼀个锁。还有⼀点需要注意的是,我们常听到的类锁其实也是对象锁。Java类只有⼀个Class对象(可以有多个实例对象,多个实例共原创 2022-03-05 15:21:13 · 397 阅读 · 0 评论 -
深入理解 volatile 关键字(理解内存屏障与指令重排)
文章目录一、volatile 关键字1. 几个基本概念1.1 内存可见性1.2 指令重排序1.3 happens-before 规则2. volatile 的效果2.1 内存可见性2.2 内存屏障3. volatile 的用途3.1 单例模式双重检查锁一、volatile 关键字1. 几个基本概念1.1 内存可见性我们都知道,在Java内存模型中,JMM 中有一个内存,每个线程有自己独立的内存空间,线程的私有内存中包含了对内存中的变量的拷贝。内存可见性就是指当两个线程的私有内存中有对内存中同一个变原创 2022-03-05 14:44:16 · 614 阅读 · 0 评论