一、類鎖和對象鎖
-
類鎖:在代碼中的方法上加了
static和synchronized
的鎖,或者synchronized(xxx.class)
-
對象鎖:在代碼中的方法上加了
synchronized
的鎖,或者synchronized(this)
的代碼段 -
方法鎖和私有鎖:都屬於對象鎖
私有鎖:在類內部聲明一個私有屬性如private Object lock
,在需要加鎖的代碼段synchronized(lock)
二、使用注意
-
類鎖和對象鎖不會產生競爭,二者的加鎖方法不會相互影響。
-
私有鎖和對象鎖也不會產生競爭,二者的加鎖方法不會相互影響。
-
synchronized直接加在方法上和synchronized(this)都是對當前對象加鎖,二者的加鎖方法夠成了競爭關系,同一時刻只能有一個方法能執行。
-
一個實例對象一把鎖,多個實例對象多把鎖.多線程解決高並發只能通過一個加鎖實例實現