老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

java正確使用volatile的方法

這篇文章主要介紹了java正確使用volatile的方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),綦江網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:綦江等地區(qū)。綦江做網(wǎng)站價(jià)格咨詢:18980820575

volatile關(guān)鍵字在java多線程中有著比較重要作用,volatile主要作用是可以保持變量在多線程中是實(shí)時(shí)可見的,是java中提供的最輕量的同步機(jī)制。

可見性

在Java的內(nèi)存模型中所有的的變量(這里的變量是類全局變量,并不是局部變量,局部變量在方法內(nèi)并沒有線程安全的問題,因?yàn)樽兞侩S方法調(diào)用完成而銷毀)都是存放在主內(nèi)存中的,而每個(gè)線程有自己的工作內(nèi)存,每次線程執(zhí)行時(shí),會(huì)從主內(nèi)存獲取變量的拷貝,對(duì)變量的操作都在線程的工作內(nèi)存中進(jìn)行,不同線程之間也不能共享工作內(nèi)存,只能從主內(nèi)存讀取變量的拷貝。具體可以通過下圖來(lái)表示:

java正確使用volatile的方法

然而對(duì)于volatile(使用synchronized/final修飾都具有可見性)來(lái)說(shuō)打破了上述的規(guī)則,即當(dāng)線程修改了變量的值,其他線程可以立即知道該變量的改變。然而對(duì)于普通變量來(lái)說(shuō),當(dāng)一個(gè)線程修改了變量,需要先將變量寫回主內(nèi)存,其他線程從主內(nèi)存讀取變量后才對(duì)該線程可見。似乎從以上的描述可以推導(dǎo)出只要使用volatile修飾的變量就可以保證該變量在多線程環(huán)境下操作是安全的,因?yàn)樗鼘?duì)于所有線程的工作內(nèi)存都是可見的也就是說(shuō)一致的。這么理解確實(shí)沒錯(cuò),但是在java中很多運(yùn)算都不是原子的,所以在java的一些運(yùn)算中使用volatile并不能保證線程安全問題。讓我們來(lái)看一個(gè)例子:

public class test{
private static volatile t=0;
 private static int add(){
  return t++;
 }

 public static void testVolatile(){
  for (int i=0;i<20;i++){
   Thread thread=new Thread(()-> {
    for (int j=0;j<1000;j++) {
     add();
    }
   });
   thread.start();
  }
  while (Thread.activeCount()>1){
   Thread.yield();
  }
  System.out.println(t);
 }

 public static void main(String[] args){
  testVolatile();
 }
}

預(yù)期這個(gè)t值應(yīng)該是20000,但是會(huì)出現(xiàn)t值小于20000的情況,原因大家應(yīng)該猜到了,問題出在t++上,t++并不是一個(gè)原子操作,t++的操作在java中代表先獲取t值,再加1,再賦值還t。在獲取t值時(shí)因?yàn)槭莢olatile修飾的,所以可以獲取線程最新值,然而在加1的時(shí)候就不能保證了,有可能其他線程已經(jīng)加1了。

那么什么場(chǎng)景使用volatile是最合適的呢?

* 在變量運(yùn)算不依賴當(dāng)前值

* 變量不需要與其他狀態(tài)變量共同參與不變約束

翻譯成中文就是對(duì)于那些在多線程中既有讀又有寫的變量,完全可以使用volatile修飾,這樣就對(duì)于讀操作就不要使用lock/synchronized比較重的操作了,直接讀就是,因?yàn)樽兞渴强梢姷摹?/p>

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java正確使用volatile的方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


名稱欄目:java正確使用volatile的方法
文章鏈接:http://www.xueling.net.cn/article/jieods.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 色婷婷国产精品 | 丝袜办公室秘书啪啪到哭 | 中国毛片毛片 | 亚洲中文字幕在线播放 | 亚洲午夜久久久综合37日本 | 99国产精品久久久 | www国产精品com| 91天天干 | 91大神在线影院 | 最大av在线| 91在线看视频 | 变态一区二区 | 亚洲色偷偷综合亚洲AV伊人蜜桃 | 国产极品粉嫩泬免费观看 | 国产偷久久一级精品A片 | 中文字幕佐山爱一区二区免费 | 丁香花在线观看免费观看图片 | xxxx中国hd | 人妻少妇久久中文字幕 | 欧美中文字幕在线观看 | 国产91xxx| 91情趣视频 | 精品国产一区二区三区久久久 | 依依成人在线视频 | 日韩欧美一 | 中文字日产乱码六区中国有限公司 | 久久久国产精华液2024特点 | www.色悠悠.com | 狠狠躁夜夜躁人人爽天天高潮 | 久久久久久做 | 操人视频 | 亚洲午夜综合 | 中午字幕在线 | 日本视频中文字幕一区二区三区 | 欧美级毛片 | 亚洲第一狼人天堂久久 | 亚洲女教师丝祙在线播放 | 一级片视频免费 | 国产成人二区 | 91福利精品第一导航禁漫天堂 | 久久不见久久见中文字幕免费 |