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.

99 lines
2.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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