1、Java内存模型
2、可见性
问题
分析
解决
给run变量加上修饰符volatile
volatile英译是不稳定的、异变的,加上此修饰符相当于告诉JVM这个变量时异变的。 虽然效率上有损失,但是保证共享变量再多线程上的可见性。
可见性和原子性
两阶段终止设计模式
—->
不需要考虑打断和打断标记的问题
犹豫模式:https://www.bilibili.com/video/BV16J411h7Rd?p=139&spm_id_from=pageDriver
3、有序性(指令重排)
原理
指令重排带来的问题
因为指令重排会造成多个结果的问题
解决
4、volatile
volatile对于可见性的保证
volatile对于有序性的保证
对于有序性的补充:
小结
happens-before规则
①
②
③
④
⑤
⑥