已采納回答 / 憂傷的帥哥
不管怎么重排序(編譯器和處理器為了提高并行度),(單線程)程序的執行結果不能被改變。java內存中的變量都有指針引用,上下文引用成鏈,這個鏈是不會被打亂重排序的,只有沒有數據依賴關系的代碼,才會被沖排序,所以在單線程內部重排序不會改變程序運行結果,這就是as-if-serial
2017-06-22
最新回答 / 慕移動9181930
嗯嗯這個可以有^_^...用框架吧還是,如果實在不想用,自己可為ie8及以下寫一個類似方法來模擬getElementsByClassName()
2017-05-19
最贊回答 / RobinYGH
olatile本質是在告訴jvm當前變量在寄存器中的值是不確定的,需要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住.volatile僅能使用在變量級別,synchronized則可以使用在變量,方法.volatile僅能實現變量的修改可見性,但不具備原子特性,而synchronized則可以保證變量的修改可見性和原子性.volatile不會造成線程的阻塞,而synchronized可能會造成線程的阻塞.volatile標記的變量不會被編譯器優化,而s...
2017-02-21
已采納回答 / zvc888
每個線程都有一個自己的內存空間,當線程啟動的時候把變量從共享內存拷貝一份到私有內存,在這個變量更改后,需要push到共享內存,其他線程才能讀取到變量新的值;
2017-02-19