java多線程學習之volatile

package learn.thread;

/*
 * volatile關鍵字,被volatile修飾的變量
 */
public class Demo8 extends Thread {
    public volatile static boolean open = true;
    public volatile static int num = 0;
    // public boolean open = true;//不用volatile也可能可以停止,volatile的特性比較難測出

    public Demo8(String name) {
        super(name);
    }

    String name;

    @Override
    public void run() {

        while (open) {
            System.out.println("循環");
        }
        System.out.println("while循環停止");
        System.out.println("num: " + num);

    }

    public static void main(String[] args) {
        Demo8 t1 = new Demo8("A");
        t1.start();
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Demo8.open = false;
        Demo8.num = 5;
    }

}

// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// 循環
// while循環停止
// num: 5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章