2012-06-30 88 views
0

我執行java-synchronisation example變化同步線程執行順序

線程調用代碼:

Caller ob1 = new Caller(target, "Hello"); 
Caller ob2 = new Caller(target, "Synchronized"); 
Caller ob3 = new Caller(target, "World"); 

輸出:

 
[Hello] 
[World] 
[Synchronized] 

爲什麼 「同步」 被印最後,雖然它在第二個叫?

+0

考慮包括對在此測試的代碼的解釋,而不是強迫讀者研究鏈接的代碼,這些代碼可能會在任何時候消失。 – seh

+0

我試圖把代碼放在引用線程中,但StackOverflow不允許我保存,因爲它認爲代碼解釋非常少。 – Arun

回答

1

無法保證執行順序。這是JVM的判斷。

調用Thread實例的start()方法並不能保證它會在方法立即調用後運行。