会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
惯看秋风
凡事预则立,不预则废
博客园
首页
新随笔
联系
管理
订阅
多线程学习目录
1. 线程状态转换
新建(New)
可运行(Runnable)
阻塞(Blocking)
无限期等待(Waiting)
限期等待(Timed Waiting)
死亡(Terminated)
2. Java实现多线程的方式及三种方式的区别
实现 Runnable 接口
实现 Callable 接口
继承 Thread 类
实现接口 VS 继承 Thread
三种方式的区别
3. 基础线程机制
Executor
Daemon(守护线程)
sleep()
yield()
线程阻塞
4. 中断
InterruptedException
interrupted()
Executor 的中断操作
5. 互斥同步
synchronized
ReentrantLock
synchronized 和 ReentrantLock 比较
synchronized与lock的区别,使用场景。看过synchronized的源码没?
什么是CAS
入门例子
Compare And Swap
什么是乐观锁和悲观锁
Synchronized(对象锁)和Static Synchronized(类锁)区别
6. 线程之间的协作
join()
wait() notify() notifyAll()
await() signal() signalAll()
sleep和wait有什么区别
7. J.U.C - AQS
CountdownLatch
CyclicBarrier
Semaphore
总结
8. J.U.C - 其它组件
FutureTask
BlockingQueue
ForkJoin
9. 线程不安全示例
10. Java 内存模型(JMM)
主内存与工作内存
内存间交互操作
内存模型三大特性
1. 原子性
2. 可见性
3. 有序性
指令重排序
数据依赖性
as-if-serial语义
程序顺序规则
重排序对多线程的影响
先行发生原则(happens-before)
1. 单一线程原则
2. 管程锁定规则
3. volatile 变量规则
4. 线程启动规则
5. 线程加入规则
6. 线程中断规则
7. 对象终结规则
8. 传递性
11. 线程安全
线程安全定义
线程安全分类
1. 不可变
2. 绝对线程安全
3. 相对线程安全
4. 线程兼容
5. 线程对立
线程安全的实现方法
1. 阻塞同步(互斥同步)
2. 非阻塞同步
3. 无同步方案
(一)可重入代码(Reentrant Code)
(二)栈封闭
(三)线程本地存储(Thread Local Storage)
12. 锁优化
自旋锁
锁消除
锁粗化
轻量级锁
偏向锁
13. 多线程开发良好的实践
14. 线程池实现原理
并发队列
线程池概念
Executor类图
线程池工作原理
初始化线程池
初始化方法
常用方法
execute与submit的区别
shutDown与shutDownNow的区别
内部实现
线程池的状态
线程池其他常用方法
如何合理设置线程池的大小
posted @
2019-07-06 19:20
惯看秋风
阅读(
7
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
公告