1. 程式人生 > >多線程面試

多線程面試

改變 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,所有這個看運氣若幹輪後會停止。

多線程面試