JAVA Synchronized對象鎖和類鎖區別

一個類就像一個四合院,四合院的大門叫做構造方法,蓋房子必須經過大門,每new一個對象,就表示在四合院裏再蓋一間新房子,大門上面的鎖,叫做構造鎖,裏面每一間房子就是一個實例,每間房子裏邊都有一個鎖叫做實例鎖。
四合院裏有廁所,水龍頭,洗衣機等等都是公共設施,都叫做static資源)你想獲得洗衣機,就需要調用static的洗衣機方法,也就是行爲)

假如一天來了3個人租房子,第一個人租了一間小房子,那麼他就獲得一個實例(第一間房子),第二個人也租了一間房子,那麼也獲得一個實例(第二間房子),如果第三個人想租房子,他看第一間房子比較好,採光各方面都不錯,他想租這個,但是呢,第一間房子已經租出去了,但是他不講道理,闖着非要住,第一間房的住戶正在家裏吃饅頭,沒有鎖門,這個人直接衝進來,說要租房子,看人家吃饅頭,他隨手直接吃了一個,然後第一個人就不夠吃了,於是第一個人給他講道理,說你沒道德(你寫代碼肯定bug多),但是呢,第二個人根本就不弔他。過了幾天第三個人又跑來,看他正在和老婆玩耍,門沒鎖,就直接衝進來,也想玩耍,然後就被第一個人打出來了,第一個人很掃興,於是想出來一個辦法,每次進屋後就把門鎖了,這樣第三個人想進來也進不來,就得等着,除非第一個人出來之後,別人才能進去。假如第一個人睡着了(sleep(xxx))外面的人可能就會等好久。 

有一天房東的老太太嫌煩,不想租房子了,就要求兒子把大門鎖了,因此就不能租房子了,租房子必須經過大門,大門都鎖了,還租個屁。因此構造方法都鎖定了,還實例雞毛對象。哈哈。


水龍頭和游泳池都是屬於當前這個四合院的,因此在java中要想使用 這些公共設施,前提你得告訴程序,你要使用哪個四合院的公共設施,四合院.水龍頭 ,使用對象.的方式告訴程序。

假如說房東不想讓這些住戶使用水龍頭,他就可以給水龍頭上一把鎖,給水龍頭上鎖,和給其它房子上鎖完全是兩個不同的對象,因此,鎖定水龍頭和鎖定實例不互斥。這就是Synchronized對象鎖和類鎖區別

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