當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?


當一個線程進行一個對象的synchronized方法之后,其他線程完全有可能再次進入該對象的其他方法。

不過要分幾種情況來看:

1、如果其他方法沒有使用synchronized關鍵字修飾,則可以進入。

2、如果當前線程進入的synchronized方法是static方法,其他線程可以進入其他synchronized修飾的非靜態方法;如果當前線程進入的synchronized方法是非static方法,其他線程可以進入其他synchronized修飾的靜態方法。

3、如果兩個方法都是靜態方法、或者都是非靜態方法,並且都使用了synchronized修飾,但只要在該方法內部調用了同步監視器的wait(),則其他線程依然可以進入其他使用synchronized方法修飾的方法。

4、如果兩個方法都是靜態方法、或者都是非靜態方法,並且都使用了synchronized修飾,而且沒有在該方法內部調用了同步監視器的wait(),則其他線程不能進入其他使用synchronized方法修飾的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM