併發程式設計(2) 多個物件多個鎖

2021-10-01 22:30:54 字數 978 閱讀 5842

一、基本概念

多個執行緒多個鎖:多個執行緒,每個執行緒都可以拿到自己指定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。

二、示例**

public

class

multithread

else

system.out.

println

("tag:"

+tag+

",num="

+num);}

catch

(exception e)

}//注意觀察run方法輸出順序

public

static

void

main

(string[

] args)})

; thread t2 =

newthread

(new

runnable()

});

t1.start()

; t2.

start();}}

三、示例總結

如果printnum方法沒有加static,執行結果如下:

如果printnum方法加上static,執行結果如下:

關鍵字synchronized取得的鎖都是物件鎖,而不是把一段**(方法)當作鎖,所以示例**中哪個執行緒先執行synchronized關鍵字的方法,哪個執行緒就持有該方法所屬物件的鎖(lock),兩個物件,執行緒獲得的就是兩個不同的鎖,它們互不影響。

有一種情況則是相同的鎖,即在靜態方法上加synchronized關鍵字,表示鎖定.class類,類一級別的鎖(獨佔.class類)。

java併發程式設計(二)多個執行緒多個鎖

多個執行緒多個鎖 多個執行緒多個鎖 多個執行緒,每個執行緒都可以拿到自己制定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。就是在上次那個部落格上說道的鎖競爭的問題,是因為所有的執行緒過來以後都爭搶同乙個鎖。如果說每個執行緒都可以或得到自己的鎖,這樣的話我們的鎖競爭問題就沒有了,如果...

多個執行緒多個鎖

多個執行緒,每個執行緒都可以拿到自己指定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。m1,m2兩個不同的物件呼叫printnum兩個執行緒都進到printnum方法裡了,如果m1進到執行緒裡,則列印結果輸出tar a num 100,然後輸出 而 的結果是m1,m2同時進來。總結...

併發程式設計學習 4 互斥鎖如何保護多個資源

鎖能夠廣泛地被應用,是因為一把鎖能夠保護多個資源,鎖與資源的關係為1 n,當我們需要保護多個資源時,最需要判定的是這些資源間有沒有關聯。就像電影院的座位和足球場的座位是完全沒有關聯的,因此用電影院門票 鎖 來管理電影院座位,用足球比賽門票 鎖 來管理比賽座位,各自管各自,通過不同的鎖來對資源進行管理...