并发机制
2023-06-08 17:45:24 5 举报
AI智能生成
笔记
作者其他创作
大纲/内容
并发基础
创建线程方法
一般四种
Thread继承
Runnable
Callable
有返回值知道结果
线程池
实际1种
调用系统的线程方法
线程状态
初始NEW
RUNNABLED:运行状态
BLOCKED:阻塞状态
WAITING: 等待状态
TIME_WAITING:超时等待状态
TERMINATED:终止状态
start0()
jvm.cpp创建java线程对象
thread.cpp创建os内核线程
set_state(INITIALIZED)
sysnc->wait
sysnc->wait
唤醒后threal->run
启动线程Thread:start
启动内核线程os:start
set_state(RUNNABLE)
notify唤醒线程
线程终止
线程的中断需要外部干预
线程中存在无限循环执行
线程中存在一些阻塞的操作
interrupt方法
InterruptedException异常的抛出并不意味着线程必须终止
直接捕获异常不做任何处理
将异常往外抛出
停止当前线程,并打印异常信息
同步锁
原子性
全部开始,全部结束
count++ 分三步走
多线程走结果就有问题
Synchronized
修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁
静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁
修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁
锁一行不锁两行
锁对象Lock
Synchronized的原理
对象头(Header)
实例数据
(Instance Data)
(Instance Data)
对齐填充(Padding)
Synchronized锁的升级
竞争情况进行升级
无锁状态
偏向锁状态
轻量级锁状态
重量级锁状态
CAS
可见性
CPU的高速缓存
CPU三级缓存
缓存一致性问题
相互线程能够看见
指令重排序
有序性
Join方法
ExecutorService方式
JMM
内存屏障
MEM_BARRIER
Happens-Before模型
as-if-seria
传递性规则
volatile变量规则
监视器锁规则
start规则
start规则
EMSI缓存一致性
BUS总线
写缓存和无效队列
ReentrantLock
0 条评论
下一页
为你推荐
查看更多