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

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

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

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

最新回答 / qq_慕設計1559327
as-if-serial:無論如何重排序,程序執行的結果應該與代碼順序執行的結果一致。很明顯,2.1和2.2,進行重排后,結果都是一樣的翻譯搜索復制

最新回答 / 一個愛西瓜的小伙
synchronized分為對象鎖和類鎖。加在非靜態方法上的鎖是對象鎖,由于main中new了兩個實例,write和read方法是不同對象,因此兩個鎖不是同一把鎖,不具有互斥性。所以出現0和6的原因就是出現在處理器的重排序原因。兩個線程同時啟動,但是先執行哪個線程是有處理器決定的。如果是讀線程先執行,結果就是0;如果是寫線程先執行就是6;如有問題請指正。

最贊回答 / iceWang
一個或某幾個操作只能在一個線程執行完之后,另一個線程才能開始執行該操作,也就是說這些操作是不可分割的,線程不能在這些操作上交替執行文中的 i++ 包括 3 個操作讀取 i 的值i 的值 +1?將 i 賦值給 i在這 3 個操作中可能會有其他線程開始執行,因此不是原子性的

最新回答 / 慕娘5114374
單核也可以實現多線程的? ? 多個線程可以并發執行

已采納回答 / 特南克斯
main 線程是會和? new 出來的線程并行執行的,如果沒有那個 while 判斷,下面這行代碼<...code...>就會在其他線程執行完之前就執行了。加 while 判斷,就是為了等五百個線程執行完畢

最贊回答 / 慕前端6229441
共享變量是在多線程操作的情況下,對某一個變量都有進行操作,該變量存儲在主存中,但是在多線程的工作內存中都有一個副本,所以該變量是共享的,即為共享變量。 volatile變量是被該關鍵字修飾的變量。在單線程中也可以用來修飾變量,但是沒有意義。用在多線程中,是為了保證被其修飾的變量對于多線程來說都是內存可見的。 在多線程中,volatile用來修飾共享變量,實現共享變量的可見性。
首頁上一頁1234567下一頁尾頁
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java多線程的基礎知識,以及synchronized實現線程同步的方法。
老師告訴你能學到什么?
1、內存可見性 2、指令重排序 3、as-if-serial語義 4、synchronized實現可見性 5、volatile實現可見性

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消