volatile 可见性

class Mydata {
    // volatile 关键字 可见性
    volatile int number = 0;

    public void addTo60() {
        this.number = 60;
    }
}

/**
 * 1. 验证 volatile 可见性
 * int number =0; number 变量之前根本没有添加 volatile关键字
 */
public class VolatileTest {
    public static void main(String[] args) {
        Mydata mydata = new Mydata();
        // 线程操作资源类
        new Thread(() -> {
            System.out.println(Thread.currentThread().getName() + "\t come in");
            // 暂停一会
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            mydata.addTo60();
            System.out.println(Thread.currentThread().getName() + "update number value: " + mydata.number);
        }, "AAA").start();

        while(mydata.number == 0){

        }

        System.out.println(Thread.currentThread().getName() + "\t mission is over, main get number value is " + mydata.number);
    }
}
AAA	 come in
AAAupdate number value: 60
main	 mission is over, main get number value is 60
上一篇:docker 中启动mysql


下一篇:darknet-yolov3训练自己的数据集(转)