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