java多線程編程三-線程啟動、停止與可見性

啟動時可見性

Java 語言規(guī)范規(guī)定:父線程在子線程啟動前對共享變量的更新對子線程是可見的。
代碼:

/**
 * @author: kent
 * @date: 2018/4/18 21:43
 */
public class ThreadStartVisibility {
    static int data = 0;

    public static void main(String[] args){
        Thread thread = new Thread(){
            @Override
            public void run(){
                Tools.randomPause(50);

                System.out.println(data);
            }
        };

        data = 1;//第一次更新
        thread.start();

        Tools.randomPause(50);
        data = 2 ;//第二次更新
    }
}

這里如果將第二次更新注釋掉得到的輸出將是 1,但是如果不注釋掉得到的將是 1 或者 2,因?yàn)?1 的賦值在子線程啟動前。

終止可見性

JLS 保證一個線程終止后該線程對共享變量的更新對于調(diào)用該線程的join方法的線程是可見的


/**
 * @author: kent
 * @date: 2018/4/19 01:44
 */
public class ThreadJoinVisibility {
    static int data = 0;
    public static void main(String[] args){
        Thread thread = new Thread(() -> {
            Tools.randomPause(50);
            data  = 1;
        });
        thread.start();
        
        //子線程結(jié)束之后才能繼續(xù)運(yùn)行main線程
        try{
            thread.join();
        }catch(InterruptedException e){
            e.printStackTrace();
        }
        System.out.println(data);
    }
}

輸出結(jié)果為1,因?yàn)樽泳€程將data賦值之后結(jié)束,data對main線程可見

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,767評論 11 349
  • 第三章 Java內(nèi)存模型 3.1 Java內(nèi)存模型的基礎(chǔ) 通信在共享內(nèi)存的模型里,通過寫-讀內(nèi)存中的公共狀態(tài)進(jìn)行隱...
    澤毛閱讀 4,493評論 2 21
  • 第5章 多線程編程 5.1 線程基礎(chǔ) 5.1.1 如何創(chuàng)建線程 在java要創(chuàng)建線程,一般有==兩種方式==:1)...
    AndroidMaster閱讀 1,895評論 0 11
  • 今天周日 原本計劃上午過來公司復(fù)習(xí)課件的 沒想到?jīng)]有成功 直接睡到中午了 下午過來公司先是硬著頭皮把幾個報告給整理...
    冬冬Steven閱讀 169評論 0 0
  • NSCalendar 結(jié)合NSCalendar和NSDate能做更多的日期\時間處理 一、獲得NSCalendar...
    愛貌貌Manners閱讀 224評論 0 0

友情鏈接更多精彩內(nèi)容