核心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文档以了解更多信息