成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

跟我學編程:Java 虛擬機之指令重排序

開發 前端
指令重排序也被稱為處理器的亂序執行,在這種情況下盡管指令的執行順序可能沒有完全按照程序順序執行,但是由于指令的執行結果的提交(反應到寄存器和內存中),仍然是按照程序順序來的,因此處理器的指令重排序并不會對單線程的正確性產生影響。

什么是指令重排序?

在實際運行時,代碼指令可能并不是嚴格按照代碼語句順序執行的。大多數現代微處理器都會 采用將指令亂序執行(out-of-order execution,簡稱OoOE或OOE)的方法,在條件允許的 情況下,直接運行當前有能力立即執行的后續指令,避開獲取下一條指令所需數據時造成的等 待。

通過亂序執行的技術,處理器可以大大提高執行效率,而這就是指令重排。

指令重排序不是必然發生的,指令重排序會導致線程安全問題。

指令重排序也被稱為處理器的亂序執行,在這種情況下盡管指令的執行順序可能沒有完全按照程序順序執行,但是由于指令的執行結果的提交(反應到寄存器和內存中),仍然是按照程序順序來的,因此處理器的指令重排序并不會對單線程的正確性產生影響。

指令重排序不會對單線程程序的正確性產生影響,

但他可能導致多線程程序出現非預期結果。

測試邏輯
首先默認為x = 0; y = 0; a = 0; b = 0;然后開啟兩個線程;
線程1執行:a = 888; x = b;
線程2執行:b = 888; y = a;
有且只有x = b,y = a兩個同時先執行,才會出現x=y=0

所以測試是否存在x=y=0觀察指令是否會出現重排現象。
public class OrderTest {
private static int x = 0, y = 0;
private static int a = 0, b = 0;

public static void main(String[] args) throws InterruptedException{
for(long i = 0; i < Long.MAX_VALUE; i++){
x = 0; y = 0; a = 0; b = 0;

CountDownLatch countDownLatch = new CountDownLatch(2);



Thread one = new Thread(new Runnable() {
@Override
public void run() {
a = 888;
x = b;

countDownLatch.countDown();
}
});



Thread two = new Thread(new Runnable() {
@Override
public void run() {

b = 888;
y = a;

countDownLatch.countDown();
}
});

one.start();
two.start();


//等待計數器變為0,即等待所有異步線程執行完畢
countDownLatch.await();
if(x == 0 && y == 0){
//x=y=0 只能是x = b;y = a;這兩個先執行
System.out.println("執行次數"+i+"發現x=y=0");
break;
}

}
}

}

結果:發現了指令重排現象

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-03-22 09:10:28

NginxNginx 簡介服務器

2010-05-18 10:46:46

2022-02-16 09:42:33

Linuxapt命令軟件包

2020-12-03 06:21:06

Java指令重排序

2011-12-28 13:24:47

JavaJVM

2020-02-04 10:05:54

LinuxWeb命令

2023-08-10 08:01:21

2020-06-18 16:39:10

KVM虛擬化虛擬機

2012-05-18 10:22:23

2020-02-03 14:45:50

LinuxWeb前端

2010-07-26 09:02:38

2010-09-17 15:12:57

JVMJava虛擬機

2013-07-17 09:32:58

2020-06-03 19:07:49

Java虛擬機JVM

2020-11-26 11:25:44

VimLinuxPython IDE

2010-06-21 21:41:26

2016-09-01 12:37:13

OpenStack虛擬機Metadata

2018-06-19 15:39:21

HeapJava虛擬機

2020-05-08 16:55:48

Java虛擬機JVM

2011-06-22 13:35:55

JVM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲国产日韩 | 日韩午夜在线播放 | 欧美日韩专区 | 久久国产电影 | 亚洲国产成人精品女人久久久 | 久久精品亚洲成在人线av网址 | 久久精品欧美一区二区三区不卡 | av毛片 | 亚洲精品乱码久久久久久蜜桃91 | 91精品国产高清一区二区三区 | 国产高清精品一区二区三区 | 中文字幕在线观看视频网站 | 国产精品久久二区 | 国产成人午夜电影网 | 在线观看午夜视频 | av在线天堂 | 久久久久国产精品一区 | 自拍偷拍第1页 | 国精产品一区二区三区 | 福利视频日韩 | 欧美激情精品久久久久久变态 | 先锋av资源在线 | 国内精品视频在线观看 | 国产成人精品一区二区三区视频 | 日韩欧美在 | 日韩在线一区二区 | 日本人麻豆 | 中文字幕视频在线观看 | 国产久| av播播 | 97人人澡人人爽91综合色 | 激情五月婷婷综合 | 天堂亚洲网 | 综合自拍| 欧美精品一区二区三区一线天视频 | 91精品国产麻豆 | 午夜在线免费观看视频 | 久久精品国产免费一区二区三区 | 国产目拍亚洲精品99久久精品 | 亚洲精品乱码久久久久久9色 | 99在线观看视频 |