主物理内存;线程工作内存;某个线程工作内存修改之后更新主物理内存的数据,别的线程的工作内存立马更根据著物理内存的更新而更新,为volatile可见性 代码: import java.util.concurrent.TimeUnit; class MyData{ //int number = 0 ; volatile int number = 0 ; public void setTo60(){ this.number = 60; } } /** * 1 验证wolatile可见性 * 2 验证wolatile不保证原子性 * 3 验证wolatile禁止重排 */ public class VolatileDemo { public static void main(String[] args){ final MyData myData = new MyData(); //资源类 final Thread aa = new Thread() { @Override public void run() { System.out.println(Thread.currentThread().getName() + " comes in"); //暂停一会线程; try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } myData.setTo60(); }; }; aa.setName("AAA"); aa.start(); //第二个线程是我们的main线程 while(myData.number == 0){ //main线程一直在这里等待我们的循环直到numbet值不再为0; } System.out.println(Thread.currentThread().getName()+" mission is over, main get number value :" + myData.number); } }
验证volatile可见性
最新推荐文章于 2023-07-02 21:03:09 发布