as-if-serial語義部分的不理解
在講到as-if-serial,說到Java編譯器、運行時和處理器都會保證Java在單線程下遵循as-if-serial語義。運行時是什么意思,感覺這句話的標點符號用得不對,導致我不是很明白,是不是說java編譯器會保證~~,且java在運行的時候處理器會保證~~?
在講到as-if-serial,說到Java編譯器、運行時和處理器都會保證Java在單線程下遵循as-if-serial語義。運行時是什么意思,感覺這句話的標點符號用得不對,導致我不是很明白,是不是說java編譯器會保證~~,且java在運行的時候處理器會保證~~?
2017-06-22
舉報
2017-06-22
不管怎么重排序(編譯器和處理器為了提高并行度),(單線程)程序的執(zhí)行結(jié)果不能被改變。
java內(nèi)存中的變量都有指針引用,上下文引用成鏈,這個鏈是不會被打亂重排序的,只有沒有數(shù)據(jù)依賴關系的代碼,才會被沖排序,所以在單線程內(nèi)部重排序不會改變程序運行結(jié)果,這就是as-if-serial
2017-06-22
編譯器或運行時環(huán)境為了優(yōu)化程序性能而采取的對指令進行重新排序執(zhí)行的一種手段。