Ryan's Java world!

          something about Java and opensource!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            51 Posts :: 25 Stories :: 59 Comments :: 0 Trackbacks

          在java 線程 3rd中3.2講到了一個(gè)少用的關(guān)鍵字 volatile.

          However, Java provides a more elegant solution: the volatile keyword. If a variable is marked as volatile, every time the variable is used it must be read from main memory. Similarly, every time the variable is written, the value must be stored in main memory. Since these operations are atomic, we can avoid the race condition in our example by marking our done flag as volatile.

          ?

          在tij中也有講述

          ?Thinking ? in?? java?? 的 ? 13.7 ? 范例 ? CanStop ? 里面有代碼 ?
          ? //Must ? be ? volatile: ?
          ? private ? volatile ? boolean ? stop ? = ? false; ?
          ? 這里boolean類型應(yīng)該就已經(jīng)是原子操作了,不需要再保證了。 ?
          ? ?
          ? 書里說 ? stop標(biāo)志必須是volatile的,以便run()方法肯定看到他(否則的話,這個(gè)值可能本地緩存) ?
          ? ?
          ? 我猜想 ? volatile表示這個(gè)值可能被別的線程改變,所以被標(biāo)志為volatile的變量,每次都是從存儲(chǔ)區(qū)中讀取變量對(duì)應(yīng)的值,而不是在該線程中本地緩存的值。因?yàn)楸镜鼐彺娴闹挡荒芗皶r(shí)反映其他線程對(duì)這個(gè)變量的影響。???
          ?


          在線程中 該關(guān)鍵字還是會(huì)用到的..

          posted on 2006-08-31 17:17 冰雨 閱讀(760) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          JSF中文技術(shù)文摘
          主站蜘蛛池模板: 天门市| 灵川县| 临夏县| 荔波县| 高雄市| 新龙县| 丹凤县| 东兰县| 涿鹿县| 瑞昌市| 礼泉县| 阿拉善盟| 蒙自县| 赣州市| 息烽县| 临湘市| 宾阳县| 五指山市| 长子县| 唐山市| 叶城县| 平罗县| 沙湾县| 兴城市| 日喀则市| 安多县| 丽江市| 瓦房店市| 东安县| 静海县| 湖北省| 宽城| 浏阳市| 五寨县| 谷城县| 饶阳县| 抚州市| 陆川县| 郁南县| 民勤县| 乌兰察布市|