1. MQ
Disruptor: https://www.jianshu.com/p/f0d4ff1f8ec9
2.线程的状态:
new:
runnable:ready、running
terminated:
timedwaiting:
waiting:
blocked:
重量级(OS锁):执行代码时间长,等待的线程数较多,未持有锁的线程进入队列,不消耗cpu,os调度队列中的线程
轻量级锁(自旋锁):代码执行时间短,等待时间短,消耗cpu
操作系统线程调度方式:?
rust,
kilim
cas,自旋锁的实现方式,
cas修改值时的原子性问题
ABA问题,加版本号
jol:org.openjdk.jol,java object layout
disrupter:单机版MQ,环形缓冲区
MESI,缓存一致性协议
缓存行,缓存行对齐,伪共享
volatile,使变量保持线程间的可见性
AQS, 是什么?
DCL,double check lock,单例是否要加volatile? 要加,cpu指令是乱序执行,对象创建时存在半初始化状态。加上volatile修饰的变量,对应的指令不可以乱序执行。
内存屏障,? jvm要求的内存屏障
用户态、内核态,?
happen before?
as if serial ,不管如何重排,cpu乱序执行,但不影响最终结果值
idea查看java类编译后的指令集插件,