亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - volatile中i++的原子性問(wèn)題

瀏覽:110日期:2024-01-14 17:29:07

問(wèn)題描述

/** * @create on 17/3/27 * @description */public class Main { static volatile int i = 0; public static class PlusTask implements Runnable{@Overridepublic void run(){ for(int k=0; k<10000; k++)i++;} } public static void main(String[] args) throws InterruptedException{Thread[] threads = new Thread[10];for(int i=0;i<10;i++){ threads[i] = new Thread(new PlusTask()); threads[i].start();}for(int i=0;i<10;i++){ threads[i].join();}System.out.println(i); }}

請(qǐng)教各位大牛 為什么這里的輸出總是小于10000? 已經(jīng)調(diào)用了thread.join

問(wèn)題解答

回答1:

你可能需要這樣:

public void run() { for (int k = 0; k < 10000; k++)synchronized (Main.class) { i++;}}

或者定義一個(gè)AtomicInteger

volatile只是起一個(gè)多線程緩存一致性作用,并不能保證某時(shí)刻只有一個(gè)線程去寫(xiě)變量。

回答2:

volitile不保證原子性

回答3:

多線程操作共享變量問(wèn)題,volitale不能不保證復(fù)合操作的原子性,也就是說(shuō)后一個(gè)線程并不能總是看到前一個(gè)線程修改后的值i,解決方法加鎖,或者原子操作

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 成人午夜在线播放 | 波多野结衣在线播放视频 | 欧美成人亚洲高清在线观看 | 手机看片久久青草福利盒子 | 精品久久久久久免费影院 | 国产91在线 | 亚洲 | 泰国情欲片寂寞的寡妇在线观看 | 欧美高清性刺激毛片 | 韩国美女一级片 | 国产精品二区高清在线 | 性高湖久久久久久久久 | 亚洲高清视频在线观看 | 三级黄色a | 日韩精品视频在线 | 亚洲乱强| 久久大胆视频 | 国产情侣久久精品 | 日韩美女免费线视频 | 成人女人a毛片在线看 | 国产成人精品视频免费大全 | 和老外3p爽粗大免费视频 | 中国一级大黄大片 | 一级做a免费视频观看网站 一级做a爰 | 波多野结衣一区二区在线 | 99久久精品一区二区三区 | 久久久久综合 | 欧美激情国产一区在线不卡 | 真人一级毛片国产 | 国产资源在线免费观看 | 特黄特级a级黄毛片免费观看多人 | 国产欧美成人 | 久久久久久a亚洲欧洲aⅴ | 日本二级毛片免费 | 美国免费一级片 | 97一级毛片全部免费播放 | 2022男人天堂 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aaa一区 | 亚洲美女视频一区二区三区 | 精品国产精品久久一区免费式 | 久久高清精品 | 欧美日韩在线永久免费播放 |