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 博客,点我看看?

浙公网安备 33010602011771号