第一種情況:
public class main
}; t.run();
system.out.println("ping");
}static void pong()
}輸出:pingpong 解釋:呼叫run()方法,整個程式只有乙個執行緒,主線程,run()是runnable介面中定義的乙個方法,是為了讓客戶程式設計師在這個方法裡寫自己的功能**的。直接呼叫和普通的類呼叫自己的成員方法是沒有任何區別的。
第二種情況
public static void main(string args)}; t.start();
system.out.println("ping");
}static void pong()
}輸出:pongping,解釋:用start()方法之後,程式就會多出乙個執行緒,設定新執行緒進入 「就緒」 狀態,等待 cpu 排程之後才會執行
這時才有和主線程爭cpu。
而下乙個 system.out.print() 幾乎(概率大於99%)可以認為是立即接著執行的。public class test02 catch (interruptedexception e)所以,最終效果就是,幾乎都是 pongping。
第三種情況
pong();}};
t.start();// 換成t.run(),觀察不同一般在筆試題中是陷阱,混淆start
mthread.sleep(250);// 2. 這句話注釋掉和不注釋掉的區別,或者更改sleep裡面時間的區別
system.out.println("ping");
}static void pong()
輸出pingpong和pongping都有可能
面試題 執行緒
今天公司新來的小夥伴問了我這樣乙個面試題 他不清楚為什麼最後輸出的是thread中的方法,而不是runnable中的方法,然後我看了下他從網上搜出的別人寫的答案,很多東西對於懂的人來說很容易就能看懂,但是對於剛剛踏入這一行業的人來說,他不明白。所以希望很多在這塊迷茫的小夥伴能夠更好的掌握這一點,那麼...
多執行緒面試題
題目 主線程執行10次,子執行緒執行10次,此過程重複50次 package com.thread.test function 主線程執行10次,子執行緒執行10次,此過程重複50次 public class threadproblem start for int j 0 j 50 j class ...
面試題 多執行緒
現有程式同時啟動了4個執行緒去呼叫testdo.dosome key,value 方法,由於testdo.dosome key,value 方法內的 是先暫停1秒,然後再輸出以秒為單位的當前時間值,所以,會列印出4個相同的時間值,如下所示 4 4 1258199615 1 1 1258199615 ...