一、基本概念
多個執行緒多個鎖:多個執行緒,每個執行緒都可以拿到自己指定的鎖,分別獲得鎖之後,執行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,當我們需要保護多個資源時,最需要判定的是這些資源間有沒有關聯。就像電影院的座位和足球場的座位是完全沒有關聯的,因此用電影院門票 鎖 來管理電影院座位,用足球比賽門票 鎖 來管理比賽座位,各自管各自,通過不同的鎖來對資源進行管理...