多線程間一致可見性volatile變量

/**
 * volatile關鍵字具備線程間可見性
 * jdk1.5之後,線程執行之前,會拷貝一份主線程之中的變量副本,用於本線程
 * 
 */
public class SonThread extends Thread{
    //多個線程中isRunning保持一致可見性
    private volatile boolean isRunning = true;
    private void setRunning(boolean isRunning){
        this.isRunning = isRunning;
    }

    public void run(){
        System.out.println("進入run方法..");
        int i = 0;
        while(isRunning == true){
            //..
        }
        System.out.println("線程停止");
    }

    public static void main(String[] args) throws InterruptedException {
        SonThread rt = new SonThread();
        rt.start();
        Thread.sleep(1000);
        rt.setRunning(false);//修改主線程中的變量isRunning=false
        System.out.println("isRunning的值已經被設置了false");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章