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