2010-03-27 28 views
-4
class A implements Runnable{ 
    B b=new B(); 
public void run(){ 
    while(true){ 
    System.out.println("H1"+Thread.currentThread().getName()); 
    } 
} 

} 

public class Test { 
public static void main(String[] str){ 
    A a1 =new A(); 
// A a2 =new A(); 
// 
    Thread t1 =new Thread(a1, "Vichi"); 
    Thread t2 =new Thread(a1,"Vishu"); 
    t1.start(); 
    t2.start(); 

} 
} 

會有怎樣的答案: 1)其中只有一個會得到任意的方式來執行 2)兩者都將得到機會的機會multitreading調度相關的java

請建議與explations

可能ANS
+1

看起來像功課,不是嗎? – Kiril 2010-03-27 21:35:26

+0

看起來像一個「編碼」面試問題。不要忘記提及你的僱主,你已經得到了答案:-) – 2010-03-30 20:24:48

回答

2

代碼中沒有顯示同步 - 兩個線程都會運行。現在控制檯訪問可能是同步的地方,但基本上我希望看​​到這樣的:

H1Vichi 
H1Vichi 
H1Vichi 
H1Vichi 
H1Vichi 
H1Vishu 
H1Vishu 
H1Vishu 
H1Vishu 
H1Vichi 
H1Vichi 
H1Vichi 
H1Vichi 
H1Vishu 
H1Vichi 

等 - 不可預知的,並且依賴於核心的機器中的數字。我嫌疑人只是由於控制檯同步,你會得到輸出塊,但你不應該依賴它。

基本上沒有理由爲什麼兩個獨立的線程不能同時運行,只是因爲它們碰巧共享相同的可運行目標。