執行緒第六課 同步鎖synchronized

2021-09-02 01:38:19 字數 1318 閱讀 2127

這節課我們來講講同步鎖synchronized

先來說說為什麼要有這個玩意。多執行緒在併發訪問共享資源時可能會引發安全問題(上節課演示過了),為此我們需要在某乙個執行緒訪問共享資源時拒絕讓其他執行緒繼續訪問。

舉個例子,廁所是公共資源吧,每個人就是乙個執行緒,當乙個人使用乙個廁所的時候是不是要在自己使用期間阻止其他人使用?那麼怎麼阻止?把門鎖上即可。這把鎖就是我們今天要講的synchronized

public class synchronizedteach 

}/**

* 在沒有枷鎖的情況下 如預料般的結果出錯了

* 下面說下synchronized可以加在**:

* 1. 普通方法上,上鎖的是當前物件

*        相當於在方法裡寫synchronized(this)

* 2. 靜態方法上,上說的是這個類的class物件

*        相當於在方法裡寫synchronized(this.getclass())或者synchronized(本類.class)

* 3. (普通/靜態)方法裡寫

*      synchronized(obj)

*      obj是要被鎖的物件*/}

}//自己寫個執行緒吧

class minethread extends thread

public minethread(runnable target)

public minethread(string name)

public minethread(runnable target, string name)

/*當synchronized被放在方法上時,鎖的是當前物件(也就是this),但是i是靜態成員,鎖當前物件是鎖不住的

@override

public synchronized void run() }*/

/*這次鎖的物件是靜態成員i,在操作i時對i上鎖了,其他執行緒就無法在該執行緒訪問i期間訪問i,所以不會引發安全問題

@override

public  void run() }}

*//*

這次鎖的是類的class物件,在鎖class物件時一切對該類的靜態成員的操作都會上鎖,即當乙個執行緒操作這個類的靜態成員時,其他執行緒無法操作這個類的任何靜態成員

@override

public void run()

}public synchronized static void add()

*/}class int

public int get()

public void add()

}

第六課 字型

a.字型系列 font family times new roman times,serif b.字型樣式 font style normal 正常 正常顯示文字 font style italic 斜體 以斜體字顯示的文字 font style oblique 傾斜的文字 文字向一邊傾斜 和斜體非...

第六課 列表

序列是python中最基本的 種資料結構。序列 於儲存 組有序的資料,所有的資料在序列當中都有 個唯 的位置 索引 並且序列中的資料會按照新增的順序來分配索引。資料結構指計算機中資料儲存的 式。python 基礎教程 第二版 對序列的定義為 資料結構。資料結構是通過某種方式 例如對元素進行編號 組織...

第六課 文法

1.名詞 動詞 他動詞 用助詞 表示他動詞的直接受詞。飲 我喝果汁。注 的發音和 相同。只用在表示助詞時。2.名詞 日語的動詞 可以將其大範圍的名詞列為受詞。意思是執行該受詞表示的內容。下面舉幾個例子。1 運動,遊戲等 踢足球 玩撲克牌 2 集會,活動等 舉行派對 會議 召開會議 3 其他 宿題 做...