JUC 執行緒八鎖

2021-10-16 08:06:24 字數 1051 閱讀 1320

package org.meng.juc;

/** * 題目:判斷列印 "one" or "two"

* * 1.兩個普通同步方法,兩個執行緒 ,標準列印,列印?// one two

* 2.新增thread.sleep(3000) 給getone() 列印? // 3s 後列印 one two

* 3.新增普通方法 getthreee 列印?// 先列印three 三秒後列印 one two

* 4.兩個普通同步方法,兩個number物件,列印? // two 3s後列印 one

* 5.修改getone()為靜態同步方法,乙個number物件,列印? // two 3s後列印 one

* 6.修改兩個方法均為靜態同步方法,乙個number物件,列印?// 3s 後列印 one two

* 7.修改getone()為靜態同步方法,gettwo()為非靜態同步方法 ,兩個number,乙個呼叫one,乙個呼叫two //two 3s後列印 one

* 8.兩個都改為靜態同步方法,兩個number 乙個呼叫getone(),乙個呼叫gettwo() //3s 後列印 one two

* 執行緒八鎖的關鍵:

* 一、非靜態方法的鎖預設為this,靜態方法的鎖為對應的class 例項(類的位元組碼)。

* 二、某一時刻內,只能有乙個執行緒持有鎖,無論幾個方法。

* */

public class testthread8monitor

}).start();

new thread(new runnable()

}).start();

/*new thread(new runnable()

}).start();*/

}}class number catch (interruptedexception e)

system.out.println("one");

}public synchronized void gettwo()

public void getthree()

}

JUC 執行緒八鎖

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

JUC 八鎖現象

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

juc學習備忘錄 執行緒八鎖

package com.wyz.juc 執行緒八鎖 題目 判斷列印的 one or two 1.兩個普通同步方法,兩個執行緒,標準列印,列印?one two 2.新增tread.sleep 給getone 列印?one two 3.新增普通的getthree 列印?three one two 4.兩...