Synchronized

Synchronized的作用主要

(1)確保線程互斥的訪問(wèn)同步代碼
(2)保證共享變量的修改能夠及時(shí)可見(jiàn)
(3)有效解決重排序問(wèn)題关贵。

Synchronized的基本使用

  1. 修飾普通方法
    當(dāng)synchronized關(guān)鍵字修飾一個(gè)方法的時(shí)候零蓉,該方法叫做同步方法玉凯。Java中的每個(gè)對(duì)象都有一個(gè)鎖(lock),或者叫做監(jiān)視器(monitor),當(dāng)一個(gè)線程訪問(wèn)某個(gè)對(duì)象的synchronized方法時(shí),將該對(duì)象上鎖喘先,其他任何線程都無(wú)法再去訪問(wèn)該對(duì)象的synchronized方法了(這里是指所有的同步方法,而不僅僅是同一個(gè)方法)廷粒,直到之前的那個(gè)線程執(zhí)行方法完畢后(或者是拋出了異常)窘拯,才將該對(duì)象的鎖釋放掉,其他線程才有可能再去訪問(wèn)該對(duì)象的synchronized方法
  2. 修飾靜態(tài)方法
    如果某個(gè)synchronized方法是static的坝茎,那么當(dāng)線程訪問(wèn)該方法時(shí)涤姊,它鎖的并不是synchronized方法所在的對(duì)象,而是synchronized方法所在的類所對(duì)應(yīng)的Class對(duì)象景东。Java中砂轻,無(wú)論一個(gè)類有多少個(gè)對(duì)象,這些對(duì)象會(huì)對(duì)應(yīng)唯一一個(gè)Class對(duì)象斤吐,因此當(dāng)線程分別訪問(wèn)同一個(gè)類的兩個(gè)對(duì)象的兩個(gè)static搔涝,synchronized方法時(shí),它們的執(zhí)行順序也是順序的和措,也就是說(shuō)一個(gè)線程先去執(zhí)行方法庄呈,執(zhí)行完畢后另一個(gè)線程才開(kāi)始。
  3. 修飾代碼塊
    synchronized方法是一種粗粒度的并發(fā)控制派阱,某一時(shí)刻诬留,只能有一個(gè)線程執(zhí)行該synchronized方法;synchronized塊則是一種細(xì)粒度的并發(fā)控制,只會(huì)將塊中的代碼同步文兑,位于方法內(nèi)盒刚、synchronized塊之外的其他代碼是可以被多個(gè)線程同時(shí)訪問(wèn)到的

Synchronized 原理

package thread.pool;

public class SynchronizedDemo {
    public void method() {
        synchronized (this) {
            System.out.println("Method 1 start");
        }
    }
}
代碼塊

結(jié)果:
代碼塊加鎖就是在方法中定義monitor對(duì)象,通過(guò)對(duì)monitor值判斷來(lái)得出是否具有操作權(quán)限绿贞。

package thread.pool;

public class SynchronizedDemo {
    public synchronized void method() {
         System.out.println("Method 1 start");
    }
}
普通方法

結(jié)果:
在常量池中加入ACC_SYNCHRONIZED標(biāo)示符因块,判斷標(biāo)識(shí)符是否存在來(lái)得出是否具有操作權(quán)限。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末籍铁,一起剝皮案震驚了整個(gè)濱河市涡上,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拒名,老刑警劉巖吩愧,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異增显,居然都是意外死亡雁佳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門同云,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)甘穿,“玉大人,你說(shuō)我怎么就攤上這事梢杭。” “怎么了秸滴?”我有些...
    開(kāi)封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵武契,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荡含,道長(zhǎng)咒唆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任释液,我火速辦了婚禮全释,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘误债。我一直安慰自己浸船,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布寝蹈。 她就那樣靜靜地躺著李命,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箫老。 梳的紋絲不亂的頭發(fā)上封字,一...
    開(kāi)封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼阔籽。 笑死流妻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笆制。 我是一名探鬼主播绅这,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼项贺!你這毒婦竟也來(lái)了君躺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤开缎,失蹤者是張志新(化名)和其女友劉穎棕叫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奕删,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俺泣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了完残。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伏钠。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谨设,靈堂內(nèi)的尸體忽然破棺而出熟掂,到底是詐尸還是另有隱情,我是刑警寧澤扎拣,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布赴肚,位于F島的核電站,受9級(jí)特大地震影響二蓝,放射性物質(zhì)發(fā)生泄漏誉券。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一刊愚、第九天 我趴在偏房一處隱蔽的房頂上張望踊跟。 院中可真熱鬧,春花似錦鸥诽、人聲如沸商玫。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)决帖。三九已至,卻和暖如春蓖捶,著一層夾襖步出監(jiān)牢的瞬間地回,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刻像,地道東北人畅买。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像细睡,于是被迫代替她去往敵國(guó)和親谷羞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容