2012-06-30 89 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()方法并不能保证它会在方法立即调用后运行。