[英]volatile keyword can't stop loop in java
public class VolatileOne {
private static boolean ready ;
private static int number ;
private static class ReaderThread extends Thread{
@Override
public void run() {
while (!ready){
Thread.yield();
}
System.out.print(number);
}
}
public static void main(String[] args) {
new ReaderThread().run();
ready = true;
number = 50;
}
}
運行此代碼后,程序不會停止,這很明顯,因為線程將准備好的變量備份到自己進程的內存中。 當我使用volatile關鍵字修改讀取時
private volatile static boolean ready ;
讀取的變量此時不會復制到過程存儲器中。 但是程序無法停止。 什么原因? 它與static關鍵字相關嗎?
如果要讓程序輸出50並返回,該怎么辦?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.