synchronized 鎖的底層原理

線程A想要獲取這個對象,就去找到該對象的monitor, 看看owner是否爲空,若是爲空說明該對象沒有被鎖住,並將本身的線程ID設置進去,並count++,若是owner不爲空,則將其線程ID放到waitset隊列中,線程釋放鎖時,將owner置爲空,並count--;當線程Thread.wait()時候也會將owner置爲空,並count--; 這個過程是須要依賴於低層的操做系統的Mutex
相關文章
相關標籤/搜索