在這里:
http://tech.meituan.com/java-memory-reordering.html
?
指令重排和內存可見性(緩存不一致)是兩個不同的問題。
volatile關鍵字太強,即阻擋指令重排,又保證內存一致性。
unsafe.putOrderedXXX()只阻擋指令重排,不保證內存一致性。但是性能比volatile好。本文介紹了一種它的適用場景——需要確保寫入B之前A一定已經寫入完成了,但是不需要寫A和B的結果立即被另一線程看見,則適用它。
?
在這里:
http://tech.meituan.com/java-memory-reordering.html
?
指令重排和內存可見性(緩存不一致)是兩個不同的問題。
volatile關鍵字太強,即阻擋指令重排,又保證內存一致性。
unsafe.putOrderedXXX()只阻擋指令重排,不保證內存一致性。但是性能比volatile好。本文介紹了一種它的適用場景——需要確保寫入B之前A一定已經寫入完成了,但是不需要寫A和B的結果立即被另一線程看見,則適用它。
?
轉載于:https://www.cnblogs.com/ohuang/p/5788118.html
本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。 如若轉載,請注明出處:http://www.pswp.cn/news/457380.shtml 繁體地址,請注明出處:http://hk.pswp.cn/news/457380.shtml 英文地址,請注明出處:http://en.pswp.cn/news/457380.shtml
如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!