国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

java - volatile中i++的原子性問題

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

問題描述

/** * @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); }}

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

問題解答

回答1:

你可能需要這樣:

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

或者定義一個AtomicInteger

volatile只是起一個多線程緩存一致性作用,并不能保證某時刻只有一個線程去寫變量。

回答2:

volitile不保證原子性

回答3:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 456亚洲老头视频 | 亚洲日本欧美在线 | 免费亚洲视频在线观看 | 国产在线观看免费人成小说 | 国产精品11p | 本道久久综合88全国最大色 | 美女张开腿让男人桶的 视频 | 亚洲精品国产一区二区三 | 国产成人亚洲综合欧美一部 | 国产精品久久精品视 | 午夜香蕉网 | 亚洲图片一区二区 | 女人张开腿让男人桶免费网站 | 毛片啪啪视频 | jyzzjyzzjyzz日本在线观看 | 99精品国产兔费观看久久99 | 国产又粗又黄又湿又大 | 国产精品国产三级国产在线观看 | 欧美国产精品 | 91精品国产爱久久久久 | 国产91精品久久久久999 | 人与禽的免费一级毛片 | 国产在线欧美日韩一区二区 | 日本一区二区免费在线观看 | 午夜黄色毛片 | 黄色国产免费观看 | 日韩精品一区二区三区高清 | 国产黄色在线播放 | 久草视频大全 | 日本噜噜影院 | 亚洲性xx| 精品视频免费在线观看 | 91成人午夜性a一级毛片 | 美国三级 | 99久久免费精品视频 | 国产精品久久久99 | 日韩精品中文字幕视频一区 | 久草在线在线 | 亚洲国产一区二区三区最新 | 91原创视频在线观看 | 亚洲精品视频观看 |