package com.test.gateway.test;
import lombok.SneakyThrows;
import java.util.concurrent.TimeUnit;
public class SyncTest {
public static void main(String[] args) {
ThreadTest threadTest = new ThreadTest();
threadTest.start();
for(;;) {
if(threadTest.isFlag()) {
System.out.println("主线程运行.....");
}
}
}
}
class ThreadTest extends Thread {
private boolean flag = false;
@SneakyThrows
@Override
public void run() {
for (int i = 0; i <10; i++) {
System.out.println(i);
}
flag = true;
System.out.println("flag==="+flag);
super.run();
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
class ThreadTest extends Thread {
private boolean flag = false;
@SneakyThrows
@Override
public void run() {
for (int i = 0; i <100; i++) {
System.out.println(i);
}
flag = true;
System.out.println("flag==="+flag);
super.run();
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
class ThreadTest extends Thread {
private boolean flag = false;
@SneakyThrows
@Override
public void run() {
TimeUnit.SECONDS.sleep(3);
flag = true;
System.out.println("flag==="+flag);
super.run();
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
class ThreadTest extends Thread {
private boolean flag = false;
@SneakyThrows
@Override
public void run() {
TimeUnit.SECONDS.sleep(10);
flag = true;
System.out.println("flag==="+flag);
super.run();
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
当一个线程再执行过程再很短的时间内修改了共享变量,那么即使我们不用
volatile关键字去修饰这个变量,也会将更改的数据从工作内存刷新到主内存,这个时间大概再3毫秒左右,那也就是说volatile关键字表示不管怎么样我修改了要告诉别人