这个世界都是并发的,编程里更是这样,俗话说:并发知识大,一口吃不下。想成为一名优秀的 Java 开发,学好并发,绝对是你走入高薪行列的必备能力之一。
并发涉及的知识点,其实十分琐碎。学完记不住,记住了用不对。在并发底层原理中,不仅涉及 Java 语言,更涉及 JVM、操作系统、内存、CPU 指令等,令人一头雾水。
这份笔记+学习脑图可以帮你系统地学习Java 并发编程知识,并告别碎片化获取知识的弊端。
帮你建立起知识脉络。让每一个工具类,成为你并发知识体系中的一块块“拼图”。在这里我将这份笔记进行一个开源形式的分享,大体内容有这些:
线程
-
线程的启动
-
实现Runnab1e接口
-
继承Thread类
-
实现Callable接口
-
线程的状态
-
线程的方法
-
线程的优先级
-
守护线程
-
未捕获异常处理器
并发编程的问题
-
线程引入开销:上下文切换与内存同步
-
线程安全性(原子性+可见性)
-
死锁
线程间通信/线程同步 工具使用
-
synchronized
-
Lock
-
volatile
-
Atomic
Lock使用 深入
-
可重入锁 ReentrantLock
-
Condition与wait¬ify区别
-
await&signal
-
公平锁
-
读写锁 ReentrantReadWriteLock
-
LockSupport(锁住的是线程,synchronized锁住的是对象)
-
synchronized与Lock的区别
-
原子操作类使用
Java内存模型 线程同步工具原理
-
JMM抽象结构
-
指令重排序
-
内存屏障
-
happens-before(抽象概念,基于内存屏障)
-
顺序一致性
-
volatile原理
-
synchronized原理
-
原子操作原理
-
锁的比较
-
锁的优化
-
锁的分类
-
偏向锁(只有一个线程进入临界区)
-
轻量级锁(多个线程交替进入临界区)
-
重量级锁(多个线程同时进入临界区)
-
CPU如何实现原子操作
-
Java如何实现原子操作
-
CAS在OpenJDK中的实现
同步容器
-
ConcurrentHashMap
-
CopyOnWriteArrayList
-
BlockingQueue
-
ThreadLocal
同步工具使用
-
Semaphore (信号量)
-
Cycli eBarrier (可循环使用的屏障/栅栏)
-
Exchanger (两个线程交换数据)
-
CountDownLatch (闭锁)
-
FutureTask (Future实现类)
-
将批量同步操作转为异步操作(并行流/CompletableFuture)
-
多个异步任务合并
-
API
线程池使用
-
引入原因
-
继承体系
-
ExecutorService
-
ScheduledExecutorService
-
ThreadPoolExecutor
-
创建线程池
-
线程动态变化
-
扩展ThreadPoolExecutor
-
ScheduledThreadPoolExecutor
-
Executors
-
CompletionService
J.U.C 源码解析
-
AQS的接口
-
AQS使用实例(互斥锁,tryAcquire只需一次CAS)
-
AQS实现
-
同步队列
-
独占式同步状态
-
共享式同步状态
-
独占式超时获取同步状态
-
ReentrantLock公平锁
-
ReentrantReadWriteLock
-
读写状态的设计
-
写锁的获取与释放
-
读锁的获取与释放(放弃)
-
锁降级
-
LockSupport
-
Condition
-
等待队列
-
AtomicInteger
-
ThreadPoolExeuctor
-
状态转换
-
成员变量
-
构造方法
-
执行任务
并发体系思维导图
Java内存模型(JMM)
-
线程通信机制
-
内存模型
-
synchronized
-
volatile
-
DCL
并发基础
-
AQS
-
CAS
锁
-
ReentrantLock
-
ReentrantReadWriteLock
-
Condition
**并发工具类
-
CyclicBarrier
-
CountDownLatch
-
Semaphore
-
Exchanger
其他
-
ThreadLocal
-
Fork/Join
Java并发集合
-
ConcurrentHashMap
-
ConcurrentLinkedQueue
-
Concurr entSkipListMap
-
ConcurrentSkipListSet
atomic
-
基本类型类
-
数组
-
引用类型
-
字段类
阻塞队列
-
ArrayBlockingQueue
-
LinkedBlockingQueue
-
PriorityBlockingQueue
-
DelayQueue
-
SynchronousQueue
-
LinkedTransferQueue
-
LinkedBlockingDeque
线程池
-
Executor
-
Future
很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。
我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。
不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话可以点击下方的名片自取!!!