亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

細說Java多線程之內存可見性

難度中級
時長57分
學習人數
綜合評分9.63
181人評價 查看評價
9.9 內容實用
9.6 簡潔易懂
9.4 邏輯清晰

最新回答 / 洋__
你的處理器是多核的,書上是不是寫這是單核處理器的情況?

最贊回答 / 南國漂泊
我自己的理解是,負載均衡,都是Framework提供的功能;它們提供簡單的API而把復雜性隱藏起來;如果想要理解它們的原理,有可能還是得研究“多線程”和“并發”;各人關注點不同,無需反駁;你覺得有用就繼續鉆研,如果你覺得不掌握這些知識也夠用(使用一些框架),那就好好研究下那些框架的用法;能解決問題就行了。

最贊回答 / 你猜能
加了volatile就會一次讀寫,不會分為兩次讀寫。跟volatile不能保證原子性沒有關系。

最新回答 / 慕小鑫
我是這樣理解的? 就好比是我修改了number的值,但是修改得結果還沒有傳回主內存(這里就有一個可見性的問題),所以你就不知道我修改了,然后你又去修改了一次。

最贊回答 / 是麥兜啊
while循環內判斷的是所有的子線程是否都運行完了,如果是的話,繼續下面的打印操作。如果不用synchronized或不加鎖,程序運行時,有時候getNumber獲得的值小于500,是因為volatile定義的變量不能保證原子性,所以會出現兩個線程同時寫number時,number只增加了1,沒有增加2,所以影響到number變量最終的值不是500,而是499或498了。

最新回答 / tanyaping2015
應該加上synchronized(this),而不是為方法加synchronized

最新回答 / 慕移動9181930
嗯嗯這個可以有^_^...用框架吧還是,如果實在不想用,自己可為ie8及以下寫一個類似方法來模擬getElementsByClassName()

最贊回答 / ricklove
你根本就不理解。。這個volitate,只對單個操作有效,對i++ 或者其他多步的操作,根本保證不了線程安全

最新回答 / doubleC丶
idea正常運行會起兩個線程,debug會起一個線程
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java多線程的基礎知識,以及synchronized實現線程同步的方法。
老師告訴你能學到什么?
1、內存可見性 2、指令重排序 3、as-if-serial語義 4、synchronized實現可見性 5、volatile實現可見性

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消