類鎖 和 物件鎖
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...