日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java并发:线程共享变量可见性原理

發(fā)布時(shí)間:2023/12/10 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java并发:线程共享变量可见性原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0、線程安全性:線程安全性包括兩個(gè)方面,①可見性。②原子性。

0.1、線程之間的通信:線程的通信是指線程之間以何種機(jī)制來交換信息。在命令式編程中,線程之間的通信機(jī)制有兩種共享內(nèi)存和消息傳遞。
(1)在共享內(nèi)存的并發(fā)模型里,線程之間共享程序的公共狀態(tài),線程之間通過寫-讀內(nèi)存中的公共狀態(tài)來隱式進(jìn)行通信,典型的共享內(nèi)存通信方式就是通過共享對(duì)象進(jìn)行通信。
(2)在消息傳遞的并發(fā)模型里,線程之間沒有公共狀態(tài),線程之間必須通過明確的發(fā)送消息來顯式進(jìn)行通信,在java中典型的消息傳遞方式就是wait()和notify()。

?????????????????????????????Java內(nèi)存模型


1、可見性:一個(gè)線程對(duì)共享變量值得修改,能夠及時(shí)地被其他線程看到。

2、共享變量:如果一個(gè)變量在多個(gè)線程的工作內(nèi)存都存在副本,那么這個(gè)變量就是這幾個(gè)線程的共享變量。

3、線程的工作內(nèi)存:JMM抽象出的一種內(nèi)存模型。
???首先,所有的變量都是儲(chǔ)存在主內(nèi)存中的,每個(gè)線程都有自己的獨(dú)立的工作內(nèi)存,里面保存的是該線程使用到的變量的副本(它們是內(nèi)存這些變量的一份拷貝,而變量的原件是保存在主內(nèi)存的)。
???線程修改的變量的值是修改的該線程的工作內(nèi)存中的變量的副本,然后再將修改后的值刷新到主內(nèi)存中。
???此時(shí),其他線程能否及時(shí)地看到主內(nèi)存中該變量的更新的值,這時(shí)就涉及到了“可見性”問題。
???
4、JMM中有兩條規(guī)定:
???(1)線程對(duì)共享變量的所有操作都必須在自己的工作內(nèi)存中進(jìn)行,不能直接在主內(nèi)存中讀寫;
???(2)不同的線程之間不能直接訪問其他線程工作內(nèi)存的變量,線程之間變量值得傳遞只能通過主內(nèi)存來傳遞。
???
5、實(shí)現(xiàn)共享變量的可見性,必須保證兩點(diǎn):
???(1)線程修改后的共享變量值能夠及時(shí)從線程工作內(nèi)存中刷新到主內(nèi)存中;
???(2)其他線程能夠及時(shí)把共享變量的在、最新值從主內(nèi)存更新到自己的工作內(nèi)存中。
???
6、java支持的可見性實(shí)現(xiàn)的兩種方式:synchronized、volatile。
(1)synchronized能夠保證同步方法或同步代碼塊中變量的復(fù)合操作的原子性;也能保證變量的可見性。
(2)volatile不能保證變量的復(fù)合操作的原子性;只能保證變量的可見性。


7、JMM關(guān)于synchronized的兩條規(guī)定(synchronized如何實(shí)現(xiàn)內(nèi)存可見性):
(1)線程加鎖時(shí),將清空工作內(nèi)存中共享變量的值,從而使用共享變量時(shí)需要從主內(nèi)存中重新讀取最新的值。
(2)線程解鎖時(shí),必須把共享變量的最新值刷新到主內(nèi)存中。

8、synchronized線程執(zhí)行互斥代碼的六個(gè)過程:
(1)獲得互斥鎖;
(2)清空工作內(nèi)存;
(3)從主內(nèi)存中拷貝變量的最新值到工作內(nèi)存;
(4)執(zhí)行代碼;
(5)將更改后的共享變量的值刷新到主內(nèi)存;
(6)釋放互斥鎖。


9、指令重排序:重排序不會(huì)對(duì)單線程帶來內(nèi)存可見性問題。但是多線程交互時(shí),指令重排序可能會(huì)造成內(nèi)存可見性問題。


10、volatile如何實(shí)現(xiàn)內(nèi)存可見性:通過加入內(nèi)存屏障和禁止重排序來優(yōu)化實(shí)現(xiàn)的。
(1)對(duì)volatile變量執(zhí)行寫操作時(shí),會(huì)在寫操作后加入一條store屏障指令;
(2)對(duì)volatile變量執(zhí)行讀操作時(shí),會(huì)在讀操作前加入一條load屏障指令。

11、volatile如何實(shí)現(xiàn)內(nèi)存可見性:
(1)線程寫volatile變量的過程:
????1.改變線程工作內(nèi)存中volatile變量副本的值
????2.將改變后的副本的值從工作內(nèi)存刷新的主內(nèi)存


(2)線程讀volatile變量的過程:
???1.從主內(nèi)存中讀取volatile變量的最新值到線程的工作內(nèi)存中
???2.從工作內(nèi)存中讀取volatile變量的副本
???
12、volatile不能保證變量復(fù)合操作的原子性:
private int number = 0;??????????????????????????????
number++; //不是原子操作?

number++的步驟??????????????????????????????????????
1.讀取number的值??
2.將number的值加1??
3.寫入最新的number的值?????????????????????????????

????synchronized(this){??//加入synchronized,變?yōu)樵硬僮?br /> ???????number++;
????}

private volatile int number = 0;//變?yōu)関olatile變量,無法保證原子性?? ?
?
?13、volatile和synchronized的區(qū)別
(1)volatile本質(zhì)是在告訴jvm當(dāng)前變量在寄存器(工作內(nèi)存)中的值是不確定的,需要從主存中讀取; synchronized則是鎖定當(dāng)前變量,只有當(dāng)前線程可以訪問該變量,其他線程被阻塞住。
(2)volatile僅能使用在變量級(jí)別;synchronized則可以使用在變量、方法、和類級(jí)別的。
(3)volatile僅能實(shí)現(xiàn)變量的修改可見性,不能保證原子性;而synchronized則可以保證變量的修改可見性和原子性。
(4)volatile不會(huì)造成線程的阻塞;synchronized可能會(huì)造成線程的阻塞。
(5)volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;synchronized標(biāo)記的變量可以被編譯器優(yōu)化。
?

總結(jié)

以上是生活随笔為你收集整理的Java并发:线程共享变量可见性原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜性视频 | 亚洲女女做受ⅹxx高潮 | 一级黄色影院 | 毛片成人| a视频在线 | 在线观看亚洲视频 | 极品福利视频 | ass精品国模裸体pics | 97夜夜 | 亚洲视频欧美视频 | 91黄址 | 天天干天天做天天操 | 老汉色老汉首页av亚洲 | 天狂传说之巴啦啦小魔仙 | 1区2区视频 | 神马久久网 | 美女脱裤子让男人捅 | 中文字幕 成人 | 欧美 丝袜 自拍 制服 另类 | 国产精品999视频 | 国产区av | 欧美精品成人一区二区在线观看 | 葵司ssni-879在线播放 | 好吊色视频一区二区 | 日本高清三区 | 国产三级在线 | 国产精品二区一区二区aⅴ污介绍 | 91搞| 中文字幕亚洲在线 | 欧美日本韩国一区 | 成人精品一区二区三区四区 | 毛片3| 午夜欧美精品 | 国产一二三四在线 | 亚洲素人 | 性三级视频 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 无人在线观看的免费高清视频 | 玖玖爱在线观看 | 亚洲 欧美 另类 综合 偷拍 | 天天夜夜操 | 精品人妻在线视频 | 好屌妞视频这里只有精品 | 在线你懂的视频 | 水果派解说av| 免费在线一级片 | 日韩av在线免费播放 | 亚洲精品黄色 | 午夜理伦三级做爰电影 | 欧美日韩在线视频一区二区 | 亚洲av综合一区二区 | av中文一区 | www.欧美com | 黄色一级片免费 | 日本一区二区三区精品 | 亚洲欧洲精品一区二区三区 | 欧美伊人 | 99精品自拍| 亚洲一区成人在线 | 富二代成人短视频 | 亚洲天堂2018av| 欧美一区免费 | 久久二区三区 | 国产极品999 | 六月综合激情 | 亚洲综合在线中文字幕 | 国产伦一区二区三区 | 欧美午夜精品理论片 | 国产在线观看黄 | 日本成人黄色片 | 精品盗摄一区二区三区 | 国产一区二区在线视频观看 | 亚洲男人第一天堂 | 国产巨乳在线观看 | 五月综合激情网 | 殴美性生活 | 免费观看理伦片在线播放视频软件 | 91操视频| 国产又粗又大又爽 | 国产精品va | 在线观看视频99 | 免费黄色在线网址 | 夜夜操夜夜爱 | 国产在线色站 | 91这里只有精品 | 国产美女久久久久久 | 国产三级久久 | 麻豆一区二区三区四区 | 欧美日韩一区二区三区视频 | 中文字幕永久在线播放 | 七仙女欲春2一级裸体片 | 青青青手机视频 | 私人av | 91久久国产综合久久 | 美女性生活视频 | 国产视频在线播放 | 蜜桃精品一区二区 | 久草精品在线观看 | 午夜亚洲福利在线老司机 |