當它鎖定一個方法或一個程式碼區塊的時候,同一時刻最多只有一個執行緒執行這段程式碼。當兩個並發執行緒存取同一個物件object中的這個加鎖同步程式碼區塊時,一個時間內只能有一個執行緒執行。另一個執行緒必須等待目前執行緒執行完這個程式碼區塊以後才能執行該程式碼區塊。
那問題來了,如果兩個執行緒存取的是這個物件的不同實例,還會阻塞嗎?
PHP中文网2017-06-28 09:24:12
synchronized的用法有以下三種
指定物件加鎖。類似於synchronized (instance) {}。
直接作用於實例方法。相當於對目前實例加鎖,進入同步方法前要取得目前實例的鎖。
直接作用於靜態方法。相當於對目前類別加鎖,進入同步方法前取得目前類別的鎖。
對於上面的1、2.必須是同一物件或同一實例時才會使執行緒阻塞。