在 java 虛擬機(jī)中,監(jiān)視器和鎖在Java虛擬機(jī)中是一塊使用的。監(jiān)視器監(jiān)視一塊同步代碼塊,確保一次只有一個線程執(zhí)行同步代碼塊。每一個監(jiān)視器都和一個對象引用相關(guān)聯(lián)。線程在獲取鎖之前不允許執(zhí)行同步代碼。
一旦方法或者代碼塊被 synchronized 修飾,那么這個部分就放入了監(jiān)視器的監(jiān)視區(qū)域,確保一次只能有一個線程執(zhí)行該部分的代碼,線程在獲取鎖之前不允許執(zhí)行該部分的代碼
另外 java 還提供了顯式監(jiān)視器( Lock )和隱式監(jiān)視器( synchronized )兩種鎖方案