一、指令重排
1. 流水线
- 通过将做鱼分为5个步骤,提高了生产效率
2. 计组
- 每条指令都可以划分为取指令 — 指令译码 — 执行指令 — 内存访问 — 数据回写
- 流水线并不能提高单个指令的执行时间,但是变相的提高了吞吐量
二、Java有序性
1. 可重排性
- 可以重排
private int i = 0;
private int j = 2;
i++;
j++;
- 不可重排,重排后就会发生错误
- 这种JVM层面的指令重排序,就会引发莫名其妙的错误
private int i = 0;
private int j = 2;
i = 10;
j = i-1;
2. 禁止重新排序
private int i = 0;
private volatile int j = 1;
// 只需要在j上加,这样代码中j的上面的所有代码,就不会被放到j后实现
i = 10;
j = i - 1;