執行緒學習02

2021-06-14 11:08:02 字數 1185 閱讀 8729

synchronized

用法:a) synchronized amethod() {}     

b) bmethod() }

c) cmethod( object object ) }

d) synchronized static dstaticmethod {}

e) estaticmethod }

1、synchronized 關鍵字的作用域有物件和類兩種

-- a、b、c 鎖的範圍是物件;d、e 鎖的範圍範圍是類

2、每個物件都包含了唯一的一把鎖(也叫作「監視器」);每個類也有唯一的一把鎖。

-- a、b 鎖在當前物件上;d、e 鎖在類上;c 鎖在object物件上

3、a、b 效果相同;d、e 效果相同

-- e 不能用類例項.getclass(),因為用classinstance.getclass()達不到鎖這個class的目的

(注意 a.class == a.getclass)

4、c 的最好實現如下,只需3條操作碼

private byte lock = new byte[0]

synchronized(lock)

爛七八糟:

synchronized amethod()

1、獲得當前物件鎖。防止多個執行緒同時訪問這個物件的 amethod 方法。

2、乙個物件只能有乙個鎖。

3、如果物件有多個synchronized方法,訪問了其中的乙個synchronized方法,其它執行緒不能再訪問這個物件的任意synchronized方法。

4、同類物件的不同例項的 synchronized 方法是不相干擾的。

synchronized static astaticmethod{}

1、獲得當前類的鎖。防止多個執行緒同時訪問這個類的 astaticmethod 方法。

2、對類的所有物件例項都起作用,乙個類只有乙個鎖。

3、p1.getclass() 不能當類的鎖

synchronized關鍵字是不能繼承的

synchronized關鍵字取得的鎖都是物件,不是把一段**或函式當作鎖

實現同步是要很大的系統開銷作為代價的,甚至可能造成死鎖,所以盡量避免無謂的同步控制。

synchronized 可作用於instance變數、物件引用、static函式 和class literals(類名稱字面常量)身上

Python 多執行緒學習02

這一次的目的是,兩個執行緒以方式合作,列印0 9的十個數字。不要漏,也不要重複。於是在上乙個程式的基礎上,修改一下,因為數字都存在content這個列表中,每次乙個執行緒先pop 出乙個數字,再列印,這樣,每個數字就只能被列印一次了。效果怎樣呢?試試吧。修改後的程式為 coding utf8 imp...

多執行緒02

什麼是使用者態和核心態 在作業系統裡面,作業系統的核心佔一部分記憶體,使用者應用程式佔一部分記憶體,核心即可以訪問自身的記憶體,也可以訪問使用者應用程式的記憶體,但是使用者應用程式只能訪問自身的記憶體,不能訪問核心的記憶體 執行緒的啟動 關閉 切換都要依賴於核心態 voliate 保證執行緒可見性 ...

多執行緒02 執行緒建立

1 方式一 繼承 thread 類,重寫run 方法,呼叫start 開啟執行緒 public class thread01 extends thread main 是主線程 public static void main string args throws interruptedexceptio...