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

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

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

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

最贊回答 / RobinYGH
olatile本質是在告訴jvm當前變量在寄存器中的值是不確定的,需要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住.volatile僅能使用在變量級別,synchronized則可以使用在變量,方法.volatile僅能實現變量的修改可見性,但不具備原子特性,而synchronized則可以保證變量的修改可見性和原子性.volatile不會造成線程的阻塞,而synchronized可能會造成線程的阻塞.volatile標記的變量不會被編譯器優化,而s...

最新回答 / 絕望中進擊的蝸牛
volatile只能保證代碼的可見性,而不能保證代碼的原子性。所以,當代碼包含其他共享變量時,如果被其他線程執行,那么值就會發生改變。

最新回答 / 0110號建筑師
private修飾對數據提供保護,可以通過set方法賦值,再通過get方法取值

最新回答 / weibo_王延武_0
單核沒關系。多核有關系。多核由于java為了提升效率進行了指令重排,所以執行順序會不同。

最贊回答 / 洋__
呵呵,提問者沒搞懂,大家不要被這個人帶偏了,他才在誤人子弟!估計提問者是想說內存可見了,怎么還會執行結果不一致呢?誰說過保證了內存可見性就保證執行結果是一致的??別人是內部線程類,視頻里read()操作和write()操作加了synchronized是原子性的,但是又不保證read()和write()哪個先執行,所以會出現2個結果,如果是先read()執行,那么result就是0,如果write()先執行,那么result就是6。最后老師通過延時保證write()先執行,結果就是只有6。建議多學習,少抱怨...

最贊回答 / smile_evil
你讓write線程休眠一會。就會出現其他狀況。因為代碼短執行的太快,線程沒有進行切換就已經執行完畢了,所以結果只有6.

最新回答 / pythonxx
單線程并且有數據依賴關系

最新回答 / 慕斯0128424
這么跟你解釋:一行java代碼被cpu執行的時候執行的是若干條cpu指令,synchronized對應到cpu執行若干條指令,但是volatile也對應若干條指令,相同的是他們對應的指令有一些相同的,即有重疊,但是又有差異,于是功能有相同也有差異。他們的使用場景也是如此。你現在不適合去理解深沉原理,先學會用,用對場景。

最新回答 / 慕斯0128424
synchronized是java語言特性,join()方法你可以理解為僅僅是Thread類作者提供的一個覺得可能較為通用的工具方法。在B對象的方法中執行ThreadA.join()方法,其結果是在B對象方法調用處,通過死循環檢測ThreadA是否死亡(isAlive()方法),如果死亡(理解為ThreadA的run()方法運行結束)則繼續B對象的方法后續代碼執行。建議閱讀join()方法源碼

最新回答 / wei嘗不可
引用 @追風少年 : ?一般是考慮安全性,對數據提供保護,可以通過set方法賦值,再通過get方法取值,這就是java封裝的思想

最新回答 / 天啟之魂
一個線程sleep 后 實際也就釋放了執行權 這樣可以讓其他線程去執行,這樣不就達到多個線程交替執行嗎?結果就明顯了不然 執行的結果是完全隨機的,說不好一個線程執行很久都是有可能的

最新回答 / qq_可口可樂_4
線程是搶占式執行的,sleep意味著當前線程在一段時間內不執行操作,可是該線程的工作內存中已經得到了number,沒有改變number的值意味著主內存中的值也沒有改變,在sleep這段時間內其他線程又得到主內存中的number,這個number與sleep中的number可能一樣(要是沒有其它線程),這樣的話這2個線程在最終執行完之后等于number++只執行一次

最新回答 / sxian_wang
對于這兩個問題,回頭重新看下內部類的相關知識,尤其是匿名內部類。
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java多線程的基礎知識,以及synchronized實現線程同步的方法。
老師告訴你能學到什么?
1、內存可見性 2、指令重排序 3、as-if-serial語義 4、synchronized實現可見性 5、volatile實現可見性

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消