1
以下のクラスをグローバル変数で作成しました。 しかし、なぜ私のスレッドは終了していない、または死んでしまったのですか?コアJavaマルチスレッド - スレッドが終了していません
作成したスレッドは、メインメモリからの読み出し/書き込みされることはありませんisRequestToStopの独自のバージョンを持って、揮発性がフラッシュされ、あなたの変数を強制しますprivate static volatile boolean isRequestToStop = false;
あなたのブール変数は揮発性にする必要があり
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;
}
}