Java并发大全
2021-02-01 18:16:33 1 举报
AI智能生成
跟着这脑图学,Java并发这方面基本就没有问题。
作者其他创作
大纲/内容
并发基础
AQS
AbstractqueuedSynchronizer同步器
队列同步器
独占锁
实现方式
同步队列
独占式同步状态获取与释放
共享式同步状态获取与释放
CAS
Compare And Swap
缺陷
ABA
循环时间长 开销大
只能保证一个共享变量的原子操作
线程间通信
volatile和synchronized关键字
等待/通知
Thread.join()
ThreadLocal
并发工具类
CyclicBarrier
CountDownLatch
一个线程调用countDown方法happen-before,另外一个线程调用await方法。
CyclicBarrier和CountDownLatch的区别
Semaphore
使用场景
锁
ReentrantLock
实现重进入
公平锁
非公平锁
ReentrantReadWriterlock
volatile
volatile实现机制
内存语义
volatile的特性
volatile写-读的内存语义
volatile内存语义的实现
锁的内存语义
NonfairSync
concurrent包的实现
Lock接口
Condition
Condition的实现
等待队列
等待
通知
LockSupport
其他
ThreadLocal
Fork/Join
分割任务
执行任务合并结果
Disruptor并发框架
线程通信
共享内存
消息传递
并发集合
ConcurrentHashMap
什么是HashMap
高并发下的HashMap
什么是ConcurrentHashMap
ConcurrentHashMap的结构
ConcurrentHashMap初始化
ConcurrentHashMap允许多个读并发进行?
ConcurrentHashMap的size操作
ConcurrentHashMap get操作
ConcurrentHashMap put操作
ConcurrentLinkedQueue
如何实现一个线程安全的队列?
1.使用阻塞算法
2.使用非阻塞算法
ConcurrentLinkedQueue
入队列
出队列
java中的阻塞队列
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
使用场景
1.缓存系统的设计
2.定时任务调度
SynchronousQueue
LinkedTransferQueue
LinkedBlockingDeque
CopyOnWrite
CopyOnWriteArrayList
CopyOnWriteArraySet
CopyOnWrite 容器介绍
使用场景
黑白名单
读多写少
优缺点
线程池
Executor
ThreadPoolExecutor
构造参数
RejectedExecutionHandler
AbortPolicy
CallerRunsPolicy
DiscardOldestPolicy
DiscardPolicy
corePoolSize
maximumPoolSize
keepAliveTime
TimeUnit
runnableTaskQueue
PriorityBlockingQueue
ArrayBlockingQueue
LinkedBlockingQueue
SynchronousQueue
ThreadFactory
种类
FixedThreadPool
SingleThreadExecutor
CachedThreadPool
Callable和Future
ScheduledExecutorService
合理配置线程池
线程池的监控
原子操作
基本类型
AtomicBoolean
AtomicInteger
AtomicLong
数组
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
引用类型
AtomicReference
AtomicReferenceArrayFieldUpdater
原子更新字段类
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedReference
java如何实现原子操作
1.使用循环CAS实现原子操作
2.锁
内存模型
重排序
数据依赖性
写一个变量之后,再读这个变量
写一个变量之后,再写 这个变量
读一个变量之后,再写 这个变量
重排序对多线程的影响
顺序一致性
数据竞争与顺序一致性
顺序一致性内存模型
同步程序的顺序一致性效果
未同步程序的执行特性
happens-before
定义
规则
1、程序次序规则:在一个单独的线程中,按照程序代码的执行流顺序,(时间上)先执行的操作happen—before(时间上)后执行的操作。
2、管理锁定规则:一个unlock操作happen—before后面(时间上的先后顺序,下同)对同一个锁的lock操作。
3、volatile变量规则:对一个volatile变量的写操作happen—before后面对该变量的读操作
4、线程启动规则:Thread对象的start()方法happen—before此线程的每一个动作。
5、线程终止规则:线程的所有操作都happen—before对此线程的终止检测,可以通过Thread.join()方法结束、Thread.isAlive()的返回值等手段检测到线程已经终止执行。
6、线程中断规则:对线程interrupt()方法的调用happen—before发生于被中断线程的代码检测到中断时事件的发生
7、对象终结规则:一个对象的初始化完成(构造函数执行结束)happen—before它的finalize()方法的开始。
8、传递性:如果操作A happen—before操作B,操作B happen—before操作C,那么可以得出A happen—before操作C。
as-if-serial
JMM的内存可见性保证
synchronized原理
0 条评论
下一页
为你推荐
查看更多