是java虛擬機提供的輕量級的同步機制(乞丐版的synchronized)
專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)新和免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。具備三個性質(zhì):保證可見性,不保證原子性,禁止指令重排
前置知識:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??java內(nèi)存模型 (Java Memory Model) JMM_Pr Young的博客-博客? ? ? ? ? ? ? ? ? ??
JMM這組規(guī)范關(guān)于同步的規(guī)定:
1.線程解鎖前,必須把共享變量的值刷新回主內(nèi)存
2.線程加鎖前,必須讀取主內(nèi)存的最新值到自己的工作內(nèi)存
3.加鎖和解鎖是同一把鎖
1.保證可見性:當一個線程修改了某個共享變量的值時,其他線程是否能夠立即知道這個修改。
volatile int number=0;
這樣就可以保證,一個線程更改了共享變量number的值,其他線程也能立即知道這個修改? ? ? ? ? ?
2.不保證原子性:
原子性:某個線程正在做某個具體業(yè)務(wù)的時候,不見不可以被打擾? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
volatile int number=0;
同樣用volatile修飾共享變量,然后用20個線程都對這個共享變量進行加一操作,理論上講,最后number的值應(yīng)該是20,但實際上最后答案并不是20,這說明valatile不保證原子性
3.禁止指令重排
指令重排是指在程序執(zhí)行過程中, 為了性能考慮, 編譯器和CPU可能會對指令重新排序
在單線程環(huán)境中, 程序是按序依次執(zhí)行的
在多線程環(huán)境中, 程序的執(zhí)行可能因為指令重排而出現(xiàn)亂序
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:volatile-創(chuàng)新互聯(lián)
文章來源:http://jinyejixie.com/article22/dijgjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站營銷、用戶體驗、移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容