核心java多线程-线程未结束
已使用全局变量创建了以下类。 但为什么我的线程没有结束或变得死气沉沉核心java多线程-线程未结束,java,multithreading,Java,Multithreading,已使用全局变量创建了以下类。 但为什么我的线程没有结束或变得死气沉沉 public class MTTest { private static boolean isRequestToStop = false; public static void main(String [] args) throws Exception{ Thread T = new Thread (new Runnable(){ public void run(){ whi
public class MTTest {
private static boolean isRequestToStop = false;
public static void main(String [] args) throws Exception{
Thread T = new Thread (new Runnable(){
public void run(){
while(!getRequestToStop()) {
//System.out.println(" Value is " +getRequestToStop() );
//System.out.println("Thread");
}
}
});
T.start();
Thread.sleep(1000);
setRequestToStop();
//isRequestToStop = true;
}
public static void setRequestToStop(){
System.out.println("--- setRequestToStop()--- Called");
isRequestToStop = true;
}
public static boolean getRequestToStop(){
return isRequestToStop;
}
}
您需要使布尔变量可变
private static volatile boolean isRequestToStop = false;
创建的线程有自己的isRequestToStop版本,它不会从主存读/写,volatile将强制将变量刷新到主存
查看java文档以了解更多信息