Java對象鎖和類鎖的區別如下:
鎖的范圍:對象鎖是針對對象實例的,每個對象實例都有自己的對象鎖;而類鎖是針對類的,無論有多少個對象實例,類鎖只有一個。
鎖的獲取:對象鎖是通過synchronized關鍵字來獲取的,可以用于實例方法、實例代碼塊;類鎖是通過synchronized關鍵字加在靜態方法上或者使用Class對象來獲取的。
影響范圍:對象鎖只會影響同一個對象實例上的其他線程,不同對象實例之間的線程不會受到影響;類鎖會影響整個類的所有對象實例上的其他線程。
鎖的釋放:對象鎖在線程執行完synchronized代碼塊或方法后會自動釋放;類鎖在線程執行完synchronized代碼塊或方法后也會自動釋放。
鎖的競爭:對象鎖只會影響同一個對象實例上的線程競爭;類鎖會影響所有對象實例上的線程競爭。
總的來說,對象鎖是針對對象實例的,每個實例都有自己的鎖,只影響同一個實例上的線程;而類鎖是針對類的,只有一個鎖,影響整個類的所有實例上的線程。