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

Object占字节

16字节 能被8整除

计算机组成

img.png

  • 进程:分配资源
  • 线程:基本运行
  • 缓存:暂存数据
  • 缓存行:把同一块的数据都存缓存
  • 缓存一致性,保证各核的缓存都共享,效率低
  • 线程有序性:

锁的本质

  • 线程之间的序列性
  • synchronized

乐观锁CAS自旋

  • 比较and交换
  • 底层原子性
  • 不会阻塞

synchronized 锁升级

  • 重量级锁都交给操作系统
  • 偏向锁标记名字线程id。让原资源获得轻量级锁
  • 四种状态:无锁,偏向,轻量级、重量级

ThreadLocal

markword

  • 记录锁信息,记录回收次数
  • 记录偏向锁

线程的基本周期

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
  • target 就是Runnable一个实现类传入Thread作为有参构造

run()和start() 的区别

  • start()会创建一个新的线程run是一个具体的执行方法没有新的线程创建。