return isCoutinuePrint;
}
public void setisCountinuePrint(boolean isCountinuePrint){
this.isCoutinuePrint = isCountinuePrint;
}
public void printStringMethod(){
while(isCoutinuePrint){
System.out.println(“run printStringMethod thread name=”+Thread.currentThread().getName());
}
}
public void run(){
printStringMethod();
}
public static void main(String[] args){
PrintString PrintStringServlce = new PrintString();
new Thread(PrintStringServlce).start();
System.out.println(“线程即将停止”);
PrintStringServlce.setisCountinuePrint(false);
}
}
isContinuePrint存在于公共堆栈以及线程的私有堆栈中,线程为了效率有可能会一直在私有堆栈中取得该值
而setisContinuePrint()方法尽管被执行,更新的确实公共堆栈中的isCountinuePrint(),有可能会造成死循环
这是可以使用volatile关键字来修饰变量,他的作用是当线程访问isContinuePrint时,强制从公共堆栈取值
即增加了实例变量在多个线程之间的可见性
与synchron