2013-12-17 150 views
2

在Java中,如果僅從同步方法調用非同步方法,並且線程正在執行非同步方法,則從另一個線程調用synchronized方法。這第二個線程能夠調用非同步方法嗎?據我所知,第二個線程甚至不應該能夠調用同步方法,因爲該方法還沒有返回。不過,我仍然在問這個問題,以澄清我的困惑。從同步方法調用非同步方法

問候

+0

對第一次調用synchronized方法的同一實例上的synchronized方法的第二次調用是否是? – rgettman

+0

是的,它在類的同一個實例上。基本上我打電話內部同步和非同步方法 – Naruto

回答

2

將這個第二個線程能夠調用非同步方法?

不。實際上,第二個線程根本無法進入方法的同步部分,直到第一個線程完成它爲止。

當然,第二個線程可以直接調用非同步方法,但是您提到它永遠不會發生,所以你沒問題。

毫無疑問,在實例方法的情況下,對同步方法的調用發生在同一個實例上。

+0

我提到,非同步方法不直接調用,但它從同步方法內部調用 – Naruto

+0

@Naruto是的,我承認在答案中的部分。 – dasblinkenlight