1. volatale 关键字 -内存可见性
package com.gf.demo01; /** * 一、volatile 关键字:但多个线程进行操作共享数据时,可以保证内存中数据可见性。 * */ public class TestVolatile { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); new Thread(td).start(); while(true){ if(td.isFlag()){ System.out.println("----------"); break; } } //解决方法1: 加同步锁,但是效率低 /** while(true){ synchronized(td){ if(td.isFlag()){ System.out.println("----------"); break; } } }*/ } } class ThreadDemo implements Runnable{ //private boolean flag = false; //解决方法二 : 使用volatile private volatile boolean flag = false; @Override public void run() { try { Thread.sleep(200); flag = true; System.out.println(flag); } catch (InterruptedException e) { e.printStackTrace(); } } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } }
作者:程序员果果
出处:blog.itwolfed.com
欢迎关注公众号——《程序员果果》 ,分享SpringBoot、SpringCloud、Dubbo、Golang、Docker相关知识与技巧。
原创 Java 博客,点我看看?