多线程有三个必须要保证的特性,才能正常运行(三个特性是:有序性,可见性,原子性)JMM的作用就是保证这三个特征
有序性的原因,和保证措施(as-if-serial)JVM执行代码时,可能会优化编译器和优化CPU的性能发挥,所以会进行对代码顺序调整。当然,此顺序会保证as-if-serial(也就是再怎么优化顺序,单线程最终的结果不变。但是,多线程下,如果把代码顺序改变,可能会造成结果不同)所以当多线程下,必须考虑是否要保证代码有序性!用volatile保证可见性的原因:由于CPU和内存的速度不同,所以要在他