synchronized 修飾的鎖

2021-10-10 20:46:10 字數 1830 閱讀 8871

/**

* datetime 2020/11/25 21:14

* * @author db

**/public class concurrency

private static void lockcode()

private static void lockmethod()

//鎖的是物件例項方法,同一物件是同步的,不同物件是非同步的

lockgeneralmethod();

//2、修飾靜態方法:synchronized static methodname(){}

//鎖的是類方法,無論多少個例項物件,都是同步的

lockstaticmethod();

//多普通方法加鎖,混合呼叫

//鎖的是例項,同一物件是同步的

lockmoremethod();

//類鎖和物件鎖同時呼叫

//因為不是同一把鎖,所以是非同步的

lockgeneralandstatic();

}private static void deadlock()

}}, "threade");

thread threadf = new thread(()->

}}, "threadf");

threade.start();

threadf.start();

}private static void lockmember()

}, "threade");

thread threadf = new thread(()->

}, "threadf");

threade.start();

threadf.start();

}private static void lockthis()

private static void lockthisclass()

private static void lockgeneralmethod()

private static void lockstaticmethod()

private static void lockmoremethod()

private static void lockgeneralandstatic()

}class obja

public void run(string thread)

public synchronized void addvalue()

public synchronized void subvalue()

}class objc

public void run(string thread)

public synchronized void addvalue()

public synchronized void subvalue()

private void print()

}public void lockmember()

public void lockobj()

}public void lockthisclass()

}public synchronized void lockmethod()

public synchronized static void lockstaticmethod()

}public synchronized void lockmoremethod1()

public synchronized void lockmoremethod2()

public synchronized void lockmoremethod3()

}

場景二 synchronized修飾方法

相對於場景一 synchronized包裹 塊,synchronized修飾方法的場景要簡單明朗許多。因為無論被修飾的方法是靜態還是成員,執行緒訪問它時它都只能指定特定的鎖。而不像synchronized包裹 塊場景下,類a的物件a即可以指定自己為鎖,也可以指定類b的物件b為鎖,也可以指定類a對應的...

基於synchronized修飾靜態和非靜態方法

前言 synchronized修飾非靜態方法 synchronized修飾非靜態方法,實際上是對呼叫該方法的物件加鎖,俗稱 物件鎖 j a中每個物件都有乙個鎖,並且是唯一的。假設分配的乙個物件空間,裡面有多個方法,相當於空間裡面有多個小房間,如果我們把所有的小房間都加鎖,因為這個物件只有一把鑰匙,因...

原子性 synchronized 修飾的四種方式

原子性 synchronized 依賴jvm 1 修飾 塊 大括號括起來的 作用於 呼叫的物件 比如 public void test1 int j j,i 2 修飾方法 整個方法,作用於 呼叫的物件 比如 修飾乙個方法 public synchronized void test2 i 3 修飾靜態...