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

跟我學(xué)編程:Java 虛擬機(jī)之指令重排序

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

什么是指令重排序?

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

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

指令重排序不是必然發(fā)生的,指令重排序會導(dǎo)致線程安全問題。

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

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

但他可能導(dǎo)致多線程程序出現(xiàn)非預(yù)期結(jié)果。

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

所以測試是否存在x=y=0觀察指令是否會出現(xiàn)重排現(xiàn)象。
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();


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

}
}

}

結(jié)果:發(fā)現(xiàn)了指令重排現(xiàn)象

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-03-22 09:10:28

NginxNginx 簡介服務(wù)器

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

2023-08-10 08:01:21

2020-02-04 10:05:54

LinuxWeb命令

2020-06-18 16:39:10

KVM虛擬化虛擬機(jī)

2012-05-18 10:22:23

2020-02-03 14:45:50

LinuxWeb前端

2013-07-17 09:32:58

2010-07-26 09:02:38

2010-09-17 15:12:57

JVMJava虛擬機(jī)

2020-06-03 19:07:49

Java虛擬機(jī)JVM

2020-11-26 11:25:44

VimLinuxPython IDE

2010-06-21 21:41:26

2016-09-01 12:37:13

OpenStack虛擬機(jī)Metadata

2020-02-05 09:20:37

LinuxWeb前端

2009-06-12 15:41:01

Java虛擬機(jī)

2018-06-19 15:39:21

HeapJava虛擬機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 免费在线观看av的网站 | 男人天堂免费在线 | 九九精品在线 | 91精品国产91久久久久久最新 | av中文字幕在线 | 美国黄色毛片 | 免费h在线 | 国产精品99久久久久 | 国产精品久久久久久久久久久免费看 | 久久剧场 | 欧美另类视频 | 免费黄色的视频 | 久久一区二区三区四区 | 日韩一区二区三区四区五区六区 | 久久久123| 亚洲视频在线观看 | h在线播放 | 久草精品视频 | 欧美日在线 | 美女视频网站久久 | 久久综合成人精品亚洲另类欧美 | 美女视频一区二区三区 | 国产精品一区二区三 | 亚洲不卡av在线 | 美日韩免费视频 | 成人激情视频网 | 欧美日韩中文字幕在线 | 国产精品一区二区三区久久久 | 久久99视频这里只有精品 | 欧美色偷拍| 成人免费看电影 | 久久国产精品亚洲 | 99精品一区二区三区 | 精品视频成人 | 国产黄色在线观看 | 成人福利在线 | 97中文视频 | 国产网站在线播放 | 99re在线视频 | 亚洲精品一区二区三区中文字幕 | 亚洲欧美日韩中文字幕一区二区三区 |