导图社区 线程
java的线程相关知识整理总结
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
线程
创建方式
继承Thread
实现Runable接口
当已经有父类了就采用实现接口的方式
启动线程
start方法
start是启动线程,run是线程的开始方法
属性
id
name,可设置
state,线程状态
NEW,新建的线程
RUNABLE,线程启动, 等待cpu时间片也属于这个状态
TERMINATED,线程结束
WATING、TIME_WATING,线程wait
BLOCKED,无对象锁,阻塞了
priority,通知系统优先级
同步容器
Collection方法返回同步容器
复合操作问题
list修改时遍历问题
伪同步问题
中断
方法
interrupt,实例中断
isInterrupt,是否中断
interrupted,静态中断,清除标志位
各状态响应中断
Runnable,无io操作就设置标志位
Watting、Time_Watting抛出异常 并且清空标志位
Blocked,只是设置中断标志位
New/Terminal,无任何操作
join,主线程等待调用的线程结束, join原理是wait, 子线程结束,系统调用notify
join原理是wait, 子线程结束,系统调用notify
yeid,通知系统不需要cpu
daemon,是否为守护线程, 主线程结束了,守护线程立即销毁, 如java的垃圾回收线程
wait,进入条件等待队列, 释放对象锁
notify,唤醒等待条件的线程
sleep,休眠,进入Watting状态
竞态条件
多线程共享资源
解决方法
原子变量
sync同步操作
显示锁
内存可见性
多线程共享资源,一个线程读取 不同另外一个线程的修改
原因,cpu有缓存
解决办法
volatile
sync
修饰实例方法,静态方法,代码块
特性
可重入性,线程可持有对象锁多次
一个线程可持有对象锁多次
内存可见性,释放锁保证写入内存
死锁
协作
生产者、消费者
同一起点
主从异步模式,future,Executor
等待结束,countDownLantch
集合点