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

2022-09-12 12:39:10 字數 1110 閱讀 4687

鎖(只會鎖兩個東西=》(物件(普通同步方法),class模板(靜態同步方法)))

package com.ji.lock8;

import j**a.util.concurrent.timeunit;

/* * 八鎖就是關於鎖的八個問題

* 1. 標準情況下,兩個執行緒先列印 發簡訊還是打**(並不是先呼叫就先執行,是因為有鎖的存在)

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

* 兩個方法用的是同乙個鎖,誰先拿到誰執行

* 2. 標準情況下,兩個執行緒先列印 發簡訊還是hello

* * hello方法沒有鎖,不是同步方法不受鎖的影響

* 3. 標準情況下,兩個物件各自乙個執行緒執行,先列印 發簡訊還是打**

* * synchronized 鎖的物件是方法的呼叫者(有兩個呼叫者兩把鎖)

* 4. 增加兩個靜態的同步方法,先列印 發簡訊還是打**

* * static靜態類,只要類一載入就有了!鎖的是class模板(phone3.class(乙個類只有乙個class物件)全域性唯一)

* 5. 兩個物件,增加兩個靜態的同步方法,先列印 發簡訊還是打**

* * 還是先列印發簡訊,因為無論多少個物件都只有乙個class模板(兩個物件,只有乙個class類模板)

* 6. 乙個普通的同步方法,乙個靜態的同步方法 乙個物件 先列印 發簡訊還是打**

* * 鎖的東西不是乙個普通的同步方法鎖的是呼叫者,靜態的同步方法鎖的是類模板

* 7. 乙個普通的同步方法,乙個靜態的同步方法 兩個物件 先列印 發簡訊還是打***/

public class test4 catch (interruptedexception e)

},"a").start();

timeunit.seconds.sleep(1);

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

}}class phone4

public synchronized void call()

//hello方法沒有鎖,不是同步方法不受鎖的影響

public void hello()

}

JUC 八鎖現象

由鎖引發的8個問題 同一物件,兩個同步方法,哪個先行?同一物件,兩個同步方法,先被呼叫的執行前鎖住2s,哪個先行?乙個物件,乙個同步,乙個普通方法,哪個先行?兩個物件,分別呼叫兩個同步方法,先被呼叫的執行前鎖住2s,哪個先行?增加兩個靜態同步方法,哪個先行?兩個物件,分別呼叫兩個靜態同步方法,哪個先...

JUC 執行緒八鎖

1,乙個物件裡面如果有多個synchronized方法,某乙個時刻內,只要乙個執行緒去呼叫其中的乙個synchronized方法了,其它的執行緒都只能等待,換句話說,某乙個時刻內,只能有唯一乙個執行緒去訪問這些synchronized方法。2,鎖的是當前物件this,被鎖定後,其它的執行緒都不能進入...

JUC 執行緒八鎖

package org.meng.juc 題目 判斷列印 one or two 1.兩個普通同步方法,兩個執行緒 標準列印,列印?one two 2.新增thread.sleep 3000 給getone 列印?3s 後列印 one two 3.新增普通方法 getthreee 列印?先列印thre...