類鎖和物件鎖

2021-07-02 02:14:21 字數 553 閱讀 3775

類鎖 和 物件鎖

1.類鎖 

先定義這麼乙個類

classt(){

synchronized static methoda(){

那麼 例項化兩個物件之後

classt a;

classt b;

在這兩個物件呼叫methoda時,第乙個呼叫的會得到classt類的類鎖, 第二個呼叫的要等到第乙個呼叫結束後釋放鎖,才能完成呼叫。在這之前是執行緒堵塞,等待鎖的釋放。

2.物件鎖

classt(){

synchronized methoda(){  //注意這個時候沒有static

例項化兩個物件

classt a;

classt b;

那麼這兩個物件呼叫methoda()方法時候是互相不干擾的。 即通過a.methoda()同步方法呼叫時候得到的是a的物件鎖,而通過b.methoda()同步方法呼叫時候得到的是b的物件鎖。

總結:物件鎖 鎖的是 類的例項。 而類鎖 鎖的是類。  物件鎖屬於物件, 類鎖屬於類。  而靜態方法是屬於類的,非靜態方法是屬於物件例項的

類鎖和物件鎖

物件鎖 當乙個物件中有synchronized method或synchronized block的時候呼叫此物件的同步方法或進入其同步區域時,就必須先獲得物件鎖。如果此物件的物件鎖已被其他呼叫者占用,則需要等待此鎖被釋放 同步靜態方法 靜態變數互斥體 由於乙個class不論被例項化多少次,其中的靜...

類鎖和物件鎖的詳解

最近在面試中遇到很多關於多執行緒的問題,特別是鎖的應用,現在我就來說說類鎖和物件鎖。物件鎖 synchronized method 和類鎖 static sychronized method 的區別 物件鎖也叫例項鎖,對應synchronized關鍵字,當多個執行緒訪問多個例項時,它們互不干擾,每個...

Java類鎖和物件鎖實踐

一 前言 1.類鎖 在 中的方法上加了static和synchronized的鎖,或者synchronized class 的 段,如下文中的increament 2.物件鎖 在 中的方法上加了synchronized的鎖,或者synchronized this 的 段,如下文中的synonmeth...