多線程面試
阿新 • • 發佈:2018-06-25
改變 AR div 死循環 pre In start ride private
public class Test { private static volatile Boolean b = true; public static void main(String[] args) throws InterruptedException { new Thread() { @Override public void run() { for(;;) { if(b == !b) { System.out.println("----------b:"+b); System.exit(0); }else { System.out.println("="); } } } }.start(); Thread.sleep(100); new Thread() { public void run() {for(;;) { b = !b; System.out.println("bb:"+b); } }; }.start(); } }
題目:程序的運行結果?a. 死循環 b.停止
輸出結果:若幹個(數量不定)"="後,程序exit停止
關鍵為b == !b,這一步程序為4步:
1. 獲取b;2.獲取第二個b;3.對第二個b進行取反;4. 計算第一個b和取反後的b
在第一步和第二步之間,b的值有可能會改變,結果就有可能成為 true==!false,所有這個看運氣若幹輪後會停止。
多線程面試