You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
Object占字节
16字节 能被8整除
计算机组成
- 进程:分配资源
- 线程:基本运行
- 缓存:暂存数据
- 缓存行:把同一块的数据都存缓存
- 缓存一致性,保证各核的缓存都共享,效率低
- 线程有序性:
锁的本质
- 线程之间的序列性
- synchronized
乐观锁CAS自旋
- 比较and交换
- 底层原子性
- 不会阻塞
synchronized 锁升级
- 重量级锁都交给操作系统
- 偏向锁,标记名字,线程id。让原资源获得轻量级锁
- 四种状态:无锁,偏向,轻量级、重量级
ThreadLocal
markword
- 记录锁信息,记录回收次数
- 记录偏向锁
线程的基本周期
threadLocal
- 获取线程map资源,进行事务操作,获取信息
并发特性
- 原子性,有序性,可见性(volatile)cpu
spring中的设计模式
- 工厂模式: BeanFantory用来创建对象,在工厂里面创建对象,管理对象周期
- 单例模式: Spring中的Bean 默认为单例
- 装饰器模式: Beanwrapper 访问Bean的属性和方法
- 策略模式: Bean的实例化策略
- 代理模式: AOP的AOPProxy 代理字节码生成技术,静态代理,动态代理。
线程池
- 重量级资源
- 生产者消费者模式,解耦,异步,增加性能
- 缺点:不能有大量数据交换
处理死锁
- 锁资源互斥,死循环
- 顺序加锁
- 加锁超时时限
- 死锁检测
定位内存泄露
- OOM
AQS线程等待队列
- state 变量 volatile修饰,表示同时允许多少给线程获取锁
- 使用CAS方法获取state
多线程wait,notify,notifyALl线程等待
线程
- CPU调度的基本单位
- 目的:避免等待(IO、网络等待 )操作,提高效率
- 局限:切换上下文时,小号很大资源
- 依赖业务场景,不能异构化任务
- 线程安全问题
串行,并行,并发
- 并行就是同时处理
- 并发:多线程的并发,cpu调度线程,cpu在不同的线程切换<(^-^)>
同步与异步
- 被调用者,主动反馈信息,
- 异步:主动反馈
阻塞与非阻塞
- 调用者是否等待结果
- 同步阻塞:用锅烧水,水开不主动通知,需要一直等待着水烧开
- 同步非阻塞:不需要等待水烧开,时不时查看
- 异步阻塞: 用水壶烧水,水来了,会有通知,一直等着烧开
- 异步非阻塞: 用水壶烧水,水来了,会有通知,响应通知
线程创建
run()和start() 的区别
- start()会创建一个新的线程,run()是一个具体的执行方法,没有新的线程创建。