Java并发编程入门 互动版

流水线,指令重排序

那么在之前的分析中我们发现,执行一次程序需要很多指令,每一个指令都代表了一个硬件的运作,当一个硬件运作结束了之后,这个硬件就可以被其程序使用,这样就成了流水线。

IF    ID    EX    MEM    WB
    IF    ID    EX    MAM    WB

但是如果流水线中断,那么再次满载就要好几个周期,效率就会极慢,为了减少中断流水线,防止效率降低,就采用了指令重排序。这里就不具体的说指令重排序了,字面上理解就是程序的乱序执行。那么问题又来了,程序乱序执行一定会带来一定的问题,其中很大的问题就是结果的不确定性,这也是并发的一个问题。

Java并发很大程度上应用了继承,这里我们先回顾一下继承的知识。

<div class='cw-test'>
写一个类A,A中有方法abc,输出Hello,类B继承A,覆盖方法abc,使其输出World。实例:

public class A{ public void abc(){ System.out.println("Hello"); } } public class B extends A{ @Override public void abc(){ System.out.println("World"); } } ```