1. 程式人生 > >在監視器(Monitor)內部,是如何做線程同步的?程序應該做哪種級別的同步?

在監視器(Monitor)內部,是如何做線程同步的?程序應該做哪種級別的同步?

style moni bject lock 引用 對象引用 font 程序 monit

  在Java虛擬機中,每個對象(object和class)通過某種邏輯關聯監視器,每個監視器和一個對象引用相關聯,為了實現監視器的互斥功能,每個對象都關聯著一把鎖。

  一旦方法或者代碼塊被synchronized修飾,那麽這個部分就放入了監視器的監視區域,確保一次只有一個線程執行該部分代碼,線程必須在獲取鎖之前不允許執行該部分代碼。

  Java提供了顯示監視器(Lock)和隱式監視器(synchronized)兩種鎖方案。

在監視器(Monitor)內部,是如何做線程同步的?程序應該做哪種級別的同步?