JAVA并发总结
2021-08-29 17:22:36 0 举报
AI智能生成
java并发总结
作者其他创作
大纲/内容
基础知识
进程与线程区别
为什么使用多线程?(优点)
使用多线程并发需要考虑得问题(缺点)
线程状态
新建状态(New)
就绪状态(Runnable)
运行状态(Running)
阻塞状态(Blocked)
等待阻塞
同步阻塞
其他阻塞
死亡状态(Dead)
线程创建
Thread
示例
Runnable
示例
FutureTask
示例
三种方式对比
常用方法
wait()
示例A
示例B
notify() 和notifyAll()
虚假唤醒
join()
sleep()
yield()
sleep与yield方法的区别
线程中断
interrupt()
isInterrupted()
interrupted()
示例A
示例B
线程死锁
守护线程
setDaemon()
线程调度算法(java)
分时调度模型
抢占式调度模型
并发理论(JMM)【待补充】
JMM内存模型
共享数据
实例域
静态域
数组
抽象结构模型(待补充)
指令重排序
三大特性
原子性
可见性
有序性
并发关键字
synchronized
使用
实例方法(锁类的实例对象)
实例对象(锁类的实例对象)
静态方法(锁类对象)
class对象(锁类对象)
任意实例对象Object(锁任意对象object)
monitor机制
内存含义
volatile
synchronized 和 Volatile的比较
Lock锁
Lock锁与Synchronized关键字比较
锁存在的层次
锁释放的时机
锁获取的方式
锁的状态是否可判断
锁是否可重入
适合的场景
LockSupport工具类
void park()
void unpark(Thread thread)
void parkNanos(long nanos)
AbstractQueuedSynchronizer(AQS)抽象同步队列
设计意图
如何使用AQS实现自定义同步组件(待补充)
FIFO的双向队列
静态内部类Node
head
tail
prev
next
waitStatus
状态信息state
独占方式
方法
流程
共享方式
方法
流程
注意要点
ConditionObject
Condition机制
与Object的wait/notify方法的机制对比
与Object的wait/notify方法的使用对比
底层数据结构
await实现原理
signal/signalAll实现原理
注意要点
示例
ReentrantLock可重入锁
数据结构
公平锁
获取锁
释放锁
示例
非公平锁
获取锁
释放锁
示例
lockInterruptibly可中断方式获取锁
示例
tryLock超时等待方式获取锁
示例
等待/通知机制
示例
单独唤醒部分线程(伪代码)
ReentrantReadWriteLock可重入读写锁
实现原理
特性
写锁writerLock
获取
释放
读锁readerLock
获取
释放
读写锁-小结
CAS
并发实践
生产者-消费者问题
原子操作类
实现原理
原子更新基本类型
原子更新数组类型
原子更新引用类型
原子更新字段类型
并发工具
倒计时器CountDownLatch
CountDownLatch和join方法的区别
原理
示例
循环栅栏CyclicBarrier
原理
示例
资源访问控制器Semaphore
原理
示例
线程池Executor
线程池状态
线程池参数
ExecutorService 接口
Executors工具类
Executors.newCachedThreadPool();
Executors.newFixedThreadPool ();
Executors.newScheduledThreadPool();
Executors.newSingleThreadExecutor();
缺陷
示例
ScheduledThreadPoolExecutor任务调度器
FutureTask
实现原理
ref
方法
get()
cancel()
run()
应用场景
对象状态
内部状态转换
示例
并发容器
ConcurrentHashMap
实现原理
Map使用对比
ThreadLocal
实现原理
使用场景
方法
问题
内存泄漏
不支持继承性
示例
列表
CopyOnwriteArrayList
方法
优点
缺点
读写规则
使用场景
示例
队列
阻塞队列
BlockingQueue阻塞队列
LinkedBlockingQueue:链表实现的有界阻塞队列
ArrayBlockingQueue:数组实现的有界阻塞队列
PriorityBlockingQueue:支持优先级的无界阻塞队列
DelayQueue:存放实现了Delayed接口的无界阻塞队列
SynchronousQueue:不存储任何元素的同步阻塞队列
BlockingDeque阻塞双向队列
LinkedBlockingDeque:由链表组成的无界阻塞双向队列
TransferQueue传输队列
方法
非阻塞队列
ConcurrentLinkedQueue并发链接队列
ConcurrentLinkedDeque并发链接双向队列
总结
队列使用和应用场景总结,待补充
0 条评论
下一页