8鎖,就是關於鎖的8個問題

2021-10-09 13:06:50 字數 2314 閱讀 4058

class phone

public synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

// 兩個方法用的是同乙個鎖,排隊執行

class phone catch (interruptedexception e) system.out.println("發簡訊");

}public synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

結果如第一種,誰先搶到誰執行,後面的只能等

class phone catch (interruptedexception e) system.out.println("發簡訊");

}public void hello()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

普通方法不受鎖的影響,二者互不干擾

class phone

public synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

倆個物件倆把鎖,二者互不干擾

class phone

public static synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

情況如第一種,排隊執行,但此時鎖的物件是類的class物件

class phone

public static synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

情況如第一中,排隊執行,因為倆個物件都是乙個class物件

class phone

public static synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

靜態的同步方法 鎖的是 class 類模板

普通的同步方法 鎖的呼叫者,二把鎖互不干擾

class phone

public static synchronized void call()

}

class test,"a").start();

// 捕獲

try catch (interruptedexception e)

new thread(()->,"b").start();

}}

結果如上第七種,

synchronized 鎖的物件是方法的呼叫者

八鎖現象(八鎖就是關於鎖的八個問題)

鎖 只會鎖兩個東西 物件 普通同步方法 class模板 靜態同步方法 package com.ji.lock8 import j a.util.concurrent.timeunit 八鎖就是關於鎖的八個問題 1.標準情況下,兩個執行緒先列印 發簡訊還是打 並不是先呼叫就先執行,是因為有鎖的存在 s...

有趣的8鎖問題

話不多說,直接上 資源類 class phone 同步方法 public synchronized void sms throws interruptedexception 測試類,定義兩個執行緒 public class test catch interruptedexception e a st...

多執行緒 三 關於鎖的8個問題

使用synchronized鎖 先發簡訊後打 原因 synchronized鎖的物件是方法的呼叫者,test1的物件都是phone,因為用的同一把鎖,所以誰先拿到誰先執行。public synchronized void sendsms catch interruptedexception e sy...