package Wxin1997;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* 写一个程序证明Atomxxx类可以保证可见性
*/
public class Ex2 {
static AtomicBoolean flag= new AtomicBoolean(true);
//volatile 可见性 不保证原子性
static volatile boolean flag2=true;
static boolean flag3=true;
public static void vol(String[] args){
//线程1
new Thread(()->{
String tn =Thread.currentThread().getName();
System.out.printf("线程启动:%s%n",tn);
while(flag2){
}
System.out.printf("线程:%s结束%n",tn);
},"T1").start();
//main线程
try{
TimeUnit.SECONDS.sleep(3);
flag2=false;
System.out.println("main设置了flag=false");
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
//线程一
new Thread(()->{
String tn=Thread.currentThread().getName();
System.out.printf("线程启动:%s%n",tn);
while(flag.get()){
}
System.out.printf("线程:%s结束了%n",tn);
},"T1").start();
//main线程
try{
TimeUnit.SECONDS.sleep(3);
flag.set(false);
System.out.println("Main设置了(flag.set(false))");
}catch (Exception e){
e.printStackTrace();
}
}
}