package com.freeflying.thread.volatil;
/**
* 通过valatile解决同步死循环
* @ClassName: HandleSyncDeadCycle
* @Description:volatile强制从公共堆栈进行取值
* @author freeflying
* @date 2018年7月12日
*/
public class HandleSyncDeadCycle {
public static void main(String[] args) {
try {
HandleSyncDeadCycleEx handleSyncDeadCycleEx=new HandleSyncDeadCycleEx();
handleSyncDeadCycleEx.start();
Thread.sleep(1000);
handleSyncDeadCycleEx.setRunning(false);
System.out.println("value is become false");
} catch (Exception e) {
// TODO: handle exception
}
}
}
class HandleSyncDeadCycleEx extends Thread{
volatile private boolean isRunning=true;
public boolean isRunning() {
return isRunning;
}
public void setRunning(boolean isRunning) {
this.isRunning=isRunning;
}
@Override
public void run() {
System.out.println("input run method!");
while(isRunning==true) {
}
System.out.println("Thread is stop!!");
}
}
结果:
input run method!
value is become false
Thread is stop!!