1. 程式人生 > >JAVA併發:多執行緒程式設計之同步“監視器monitor”(三)

JAVA併發:多執行緒程式設計之同步“監視器monitor”(三)

  • 在JAVA虛擬機器中,每個物件(Object和class)通過某種邏輯關聯監視器,為了實現監視器的互斥功能,每個物件(Object和class)都關聯著一個鎖(有時也叫“互斥量”),這個鎖在作業系統書籍中稱為“訊號量”,互斥(“mutex”)是一個二進位制的訊號量。
  • 如果一個執行緒擁有了某些資料的鎖,其他的執行緒則無法獲得鎖,直到這個執行緒釋放了這個鎖。在多執行緒中,如果任何時候都是我們自己來寫這個訊號量,顯然不是很方便,幸運的是,JVM為我們自動實現了這些。
  • 為了使資料不被多個執行緒訪問,java 提供了同步塊 以及同步方法兩種實現,一旦一段程式碼被嵌入到一個synchronized關鍵字中,意味著放入了監視區域,JVM在後臺會自動為這段程式碼實現鎖的功能。