Java 多線程學習總結3

在上一篇中,我們當然希望a++,b++執行完之後,show方法再來show.我們需要的是“原子”動作,一次性地把a++,b++不間斷地執行。在java中是利用“互斥”的方法,互斥誰呢?互斥的是相同對象的加鎖代碼。如果我們把第一篇的SomeBody的方法someBodyDo加上關鍵字synchronized,表面加上了排斥鎖,只生產一個“小明”對象,生產兩個線程,同時啓動,你會發現,第一個線程執行完了之後,才執行第二個線程,或者第二個線程執行完後,才執行第一個線程。如果你生產一個“小明”對象,再一個“大剛”對象,對應的一個小明線程doSomeThing,一個大剛doSomeThing,

你會發現:這兩個程序片段還是交替執行的。可以用排斥鎖來解釋:

 


 

鎖的顏色是由對象確定的,相同顏色的鎖是互斥的,必須等進入鎖的某個程序片段執行完畢後,相同顏色的鎖的另外程序片段才能執行。不同顏色的鎖,是不互斥的。因爲他們沒有公共數據,爲什麼要互斥呢,併發執行不是更好嗎?呵呵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章