我做一個Java過去的試卷,我覺得困惑的以下問題:如何確定Java線程的行爲
問:哪一個說法始終是真實的有關以下應用程序?
class HiPri extends Thread {
HiPri() {
setPriority(10);
}
public void run() {
System.out.println(「Another thread starting up.」);
while (true) { }
}
public static void main(String args[]) {
HiPri hp1 = new HiPri();
HiPri hp2 = new HiPri();
HiPri hp3 = new HiPri();
hp1.start();
hp2.start();
hp3.start();
}
}
答:當應用程序運行時,線程hp1將執行;線程hp2和hp3永遠不會得到 的CPU。
B.當應用程序運行時,線程hp1將執行完成,線程hp2將執行完成,然後線程hp3將執行完成。 C.運行應用程序時,所有三個線程(hp1,hp2和hp3)將同時執行,並在CPU中執行時間切片。
D.上述情況在所有情況下都不能保證發生。
我選擇D,因爲我認爲B和C都是可能的但不能保證發生。關鍵的答案是C然而。我在這裏錯過了什麼嗎?任何人都可以請澄清,對我?非常感謝。
沒有與一個無限循環沒有完成。 –