一、为什么使用volatile
首先,通过一段简单的代码来理解为什么要使用volatile:
1 public class RunThread extendsThread{2 private boolean isRunning = true;3 public booleanisRunning(){4 returnisRunning;5 }6
7 public void setRunning(booleanisRunning){8 this.isRunning =isRunning;9 }10
11 @Override12 public voidrun() {13 System.out.println("进入run...");14 while(isRunning==true){}15 System.out.println("线程停止了");16 }17 }18
19
20
21 importjava.util.concurrent.TimeUnit;22
23 public classRun {24 public static voidmain(String[] args){25 try{26 RunThread thread = newRunThread();27 thread.start();28 TimeUnit.MILLISECONDS.sleep(1000);29 thread.setRunning(false);30 System.out.println("赋值为false");31 } catch(InterruptedException e) {32 e.printStackTrace();33 }34 }35 }
执行结果:
我们创建了一个RunThread对象,并启动了该线程。当 isRunning == True时,将一直