多執行緒筆記2(執行緒與鎖)

2021-10-17 04:14:13 字數 794 閱讀 5137

(一)同步方法

由於我們可以通過private關鍵字來保證資料物件只能被方法訪問,所以我們只需要針對方法提出一套機制,這套機制就是synchronized關鍵字,他包括兩種用法:synchronized方法和synchronized塊

同步方法:public synchronized void method(int args){}

synchronized方法控制對「物件」的訪問,每個物件對應一把鎖,每個synchronized方法都必須獲得呼叫該方法的物件的鎖才能執行,否則執行緒會阻塞,方法一旦執行,就獨佔該鎖,直到方法返回才釋放鎖,後面被阻塞的執行緒才能獲得這個鎖,繼續執行

缺陷:若將乙個大的方法申名為synchronized將會影響效率
同步方法弊端:方法裡面需要修改的內容才需要鎖。鎖的太多,浪費資源。

(二)同步塊

同步塊:synchronized(obj){}

obj稱之為同步監視器

obj可以使任何物件,但是推薦使用共享資源作為同步監視器

同步方法中無需指定同步監視器,因為同步方法的同步監視器就是this,就是這個物件本身,或者是class[反射中講解]

同步監視器的執行過程

1.第乙個執行緒訪問,鎖定同步監視器,執行其中**

2.第二個執行緒訪問,發現同步監視器被鎖定,無法訪問

3.第乙個執行緒訪問完畢,解鎖同步監視器

4.第二個執行緒訪問,發現同步監視器沒有鎖,然後鎖定並訪問

python 多執行緒筆記(2) 鎖

鎖是什麼?什麼場合使用鎖?鎖是一種機制,用於保護那些會引起衝突的資源。比如上廁所,進去之後第一件事幹嘛?把廁所門反鎖!表示什麼呢?表示這個廁所正在使用中!至於在廁所裡面幹大事 幹小事 還是 都可以!完事之後幹嘛?把廁所門開啟!表示什麼呢?那誰,你可以進來 了。import threading imp...

多執行緒筆記 2

物件及變數的併發訪問 1 synchronized 同步方法 多執行緒對同乙個物件中的例項變數進行併發訪問的時候產生的後果就是髒讀,而執行緒安全就是要同步獲取例項變數 2 synchronized 鎖是物件鎖,兩個執行緒分別訪問同乙個類的兩個不同物件的同乙個方法,效果是非同步執行的。3關鍵字sync...

多執行緒同步與鎖

多執行緒同步與鎖 本次主要討論的是lock,autoeventset,moniter 如下 上圖為執行緒1,2執行write1,被阻塞,直到執行緒4發出訊號,執行緒1,2收到訊號後取得執行權的執行緒可以執行 改下main 上圖為執行緒3,5執行write2,執行緒4執行wirte4,首先取得lock...