Java并发知识体系
2024-10-18 15:37:52 0 举报
AI智能生成
Java并发知识体系
作者其他创作
大纲/内容
并发理论基础
并发&并行
线程基础
线程&进程
Java线程的生命周期(6种状态)
start,sleep,join,yield等方法详解
Java线程的中断机制
Java线程间通信
volatile
等待唤醒机制
cas+park/unpark
sychronized+wait/notify/notifyAll
reentrantLock+Condition(await/singal/singalAll)
管道输入输出流
Thread.join
管程
synchronized
Lock+Condition
多线程模型
共享内存模型(JMM)
并发编程bug的源头
可见性问题
有序性问题
原子性问题
volatile原理
cas原理
happens-before原则
主存和工作内存交互8大原子操作
lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占状态。
unlock(解锁):作用于主内存变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。
read(读取):作用于主内存变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用
load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。
use(使用):作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎,每当虚拟机遇到一个需要使用变量的值的字节码指令时将会执行这个操作。
assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。
store(存储):作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的write的操作。
write(写入):作用于主内存的变量,它把store操作从工作内存中一个变量的值传送到主内存的变量中。
CPU高速缓存架构
多种缓存一致性协议
MSI protocol, the basic protocol from which the MESI protocol is derived.
Write-once (cache coherency), an early form of the MESI protocol.
MESI protocol
MOSI protocol
MOESI protocol
MESIF protocol
MERSI protocol
Dragon protocol
Firefly protocol
Write-once (cache coherency), an early form of the MESI protocol.
MESI protocol
MOSI protocol
MOESI protocol
MESIF protocol
MERSI protocol
Dragon protocol
Firefly protocol
伪共享问题
非共享内存模型
CSP
golang
Actor
Erlang
线程安全问题
分类
运行结果错误
活跃性问题(死锁,饥饿,活锁)
对象发布和初始化
线程安全问题解决方案
无锁
局部变量
不可变对象
final关键字
ThreadLocal
cas
atomic包下原子类
有锁实现
锁分类
线程要不要锁住同步资源
锁住
悲观锁
不锁住
乐观锁
等锁的过程
自旋锁:不停的去尝试获取锁
非自旋锁:阻塞型的
是否可以中断
可以
可中断锁
不可以
不可中断锁
同一个线程是否可以重复获取一把锁
可以
可重入锁
不可以
不可重入锁
多个线程竞争时,是否需要排队
需要
公平锁
不需要
非公平锁
多线程能否共享一把锁
可以共享
共享锁
不可以共享
独占锁
synchronized中锁竞争程度
偏向锁
轻量级锁
重量级锁
synchronized
Lock
基于AQS同步器(AbstractQueuedSynchronizer)
ReentrantLock
ReentrantReadWriteLock
StampedLock
并发工具类
atomic包下原子类
AtomicInteger、AtomicLong、AtomicBoolean
AtomicReference、AtomicStampedRerence、AtomicMarkableReference
AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater
DoubleAccumulator、DoubleAdder、LongAccumulator、LongAdder、Striped64
线程池
ThreadPoolExecutor
ScheduledThreadPoolExecutor
线程协作
CountDownLatch
Semaphore
CyclicBarrier
Exchanger
Phaser
并发容器
Map
ConcurrentHashMap
ConcurrentSkipListMap
List
CopyOnWriteArrayList
Set
CopyOnWriteArraySet
ConcurrentSkipListSet
Queue
BlockingQueue
ArrayBlockingQueue
LinkedBlockingQueue
SynchronousQueue
PriorityBlockingQueue
DelayQueue
LinkedTransferQueue
ConcurrentLinkedQueue
BlockingDeque
LinkedBlockingDeque
ConcurrentLinkedDeque
异步编程Future
FutureTask
CompletionService
CompletableFuture
并行框架Fork/Join
ForkJoinPool
ForkJoinTask
高性能队列Disruptor
。。。
并发设计模式
优雅终止线程的设计模式
两阶段终止(Two-phase Termination)模式
如何优雅的终止线程
避免共享的设计模式
不变性(Immutability)模式
想破坏也破坏不了
写时复制(Copy-on-Write)模式
线程本地存储(Thread-Specific Storage)模式
没有共享就没有伤害
多线程版本的if模式
守护挂起(Guarded Suspension)模式
等我准备好哦
避免执行(Balking) 模式
不需要就算了
多线程分工模式
Thread-Per-Message 模式
最简单实用的分工方法
工作线程(Worker Thread)模式
如何避免重复创建线程
生产者-消费者模式
用流水线的思想提高效率
。。。
0 条评论
下一页