美文网首页
测试指令重排代码

测试指令重排代码

作者: 呆呆猿 | 来源:发表于2020-05-31 23:33 被阅读0次

加个个sleep就能禁止指令重排

package com.example.test.thread;

/**

* 指令重排测试

*/

public class Test6 {

//加volatile

static  int a =0, b =0, x =0, y =0;

    public static void main(String[] args)throws InterruptedException {

for (int i =0; i <2000000; i++) {

a =0;

            b =0;

            x =0;

            y =0;

            /**

            * 出现的4种情况

            * 1、a =1; x= b(0) ;b=1; y=a(1)----- x=0  y=1

            * 2、b=1;y=a(0); a=1;x=b(1) ----  x=1  y =0

            * 3、a=1; b=1; x=b(1);y=a(1) ---  x=1;y=1    2个同时执行

            * 4、 x=b(0); y=a(0);a=1;b=1  ----x=0;y=0    出现指令重排

            */

            Thread thread1 =new Thread(() -> {

a =1;

                x =b;

            });

            Thread thread2 =new Thread(() -> {

b =1;

                y =a;

            });

            thread1.start();

            thread2.start();

            thread1.join();

            thread2.join();

            System.out.println("x=" +x+";y="+y);

            if (y ==0 &&x ==0) {

System.out.println("x,y都是0,i:" + i);

break;

            }

}

}

public static void setA() {

}

public void get() {

setA();

    }

}

相关文章

  • Java指令重排序与volatile关键字

    Java指令重排序与volatile关键字 1. 重现代码重排序 1.1 测试代码 完整代码参见Github,其中...

  • 测试指令重排代码

    加个个sleep就能禁止指令重排 package com.example.test.thread; /** * 指...

  • 指令重排(Happens-Before法则)

    1.什么是指令重排 程序指令的执行顺序有可能和代码的顺序不一致,这个过程就称之为指令重排。 2.指令重排的作用 J...

  • JVM 之volatile关键字重排序

    计算机在执行程序时。为了提供性能,编译器和处理器的常常会对指令做重排,源代码--->编译器优化的重排--->指令并...

  • 什么是指令重排序?

    指令重排序介绍代码在实际运行时,代码指令可能不是严格按照代码语句的顺序执行的。只要程序的最终运行结果与它顺序化执行...

  • Java笔记1--volatile&CAS&集合

    volatile保证有序性(禁止指令重排) volatile总结 volatile实现禁止指令重排优化,从而避免多...

  • Java 并发模型

    在之前的文章中,我们了解到了计算机为什么会出现指令重排、指令重排引起的问题、为了解决指令重排而引入的缓存一致性和内...

  • 指令重排

    指令重排 指令重排序是JVM为了优化指令,提高程序运行效率,在不影响单线程程序执行结果的前提下,尽可能地提高并行度...

  • 指令重排

    jvm做的一种优化策略,为了提高cpu的利用率,更改了指令执行顺序。 单线程下:jvm保证的指令执行的基本有序性,...

  • 指令重排

网友评论

      本文标题:测试指令重排代码

      本文链接:https://www.haomeiwen.com/subject/xwydzhtx.html