thread26

来源:互联网 发布:南方大数据300a 编辑:程序博客网 时间:2024/06/14 14:22
package com.neutron.t19;import java.util.concurrent.TimeUnit;/** * ThreadLocal线程局部变量 */public class T191 {   /*    *  为什么必须加上volatile?    *  虽然不加上volatile,得出的结果和目标结果一样,但是存在安全隐患,涉及到jvm原理    *  为了让变量在线程之间可见,必须要加上volatile    */    static volatile Person person = new Person();    public static void main(String[] args) {        new Thread(() -> {            try {                TimeUnit.SECONDS.sleep(2);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(person.name);        }).start();        new Thread(() -> {            try {                TimeUnit.SECONDS.sleep(1);            } catch (InterruptedException e) {                e.printStackTrace();            }            person.name = "right";        }).start();    }}class Person {    String name = "guess";}

原创粉丝点击