day33多線程三

2.1指蚜、同步方法

同步代碼塊:使用synchronized關(guān)鍵字包裹了一塊代碼肛循,讓這塊代碼同步執(zhí)行。就是每次只能一個線程來執(zhí)行柿究。

同步方法:使用synchronized關(guān)鍵字修飾一個方法,這個方法同步執(zhí)行黄选。就是每次只能一個線程來執(zhí)行蝇摸。

  • 普通的方法:對象調(diào)用。鎖定的對象办陷,就是this對象貌夕。
  • 靜態(tài)的方法:類調(diào)用。鎖定的對象民镜,就是類名.class

同步的原理:利用對象的互斥鎖啡专。

? 每個線程來訪問,只能有一個線程進入執(zhí)行制圈,第一個動作鎖對象(上鎖)们童。來保證其他線程不能進入執(zhí)行。等到該線程結(jié)束這個同步代碼塊或者同步方法鲸鹦,釋放鎖對象(開鎖)慧库,才允許其他的線程來訪問。

線程安全的類:

StringBuffer

Vector

HashTable

Collections馋嗜,集合的工具類

2.2齐板、線程之間的通信

線程之間的通信:wait(),notify()嵌戈,notifyAll()

wait()——>讓線程進入阻塞狀態(tài)覆积,暫停執(zhí)行。一直阻塞

notify()——>喚醒線程熟呛,wait()住的線程宽档,被喚醒。如果多個線程wait()了庵朝,喚醒其中的一個吗冤。

notifyAll()——>喚醒所有又厉。

語法要求:必須在同步中,由同步的鎖對象來調(diào)用椎瘟。否則java.lang.IllegalMonitorStateException異常覆致。

生產(chǎn)者消費者模型:

生產(chǎn)者(線程t1)負責(zé)生產(chǎn)產(chǎn)品,存入容器中(固定容量)肺蔚,消費者(線程t2)從容器中獲取產(chǎn)品消費掉煌妈。
容器:
    生產(chǎn)者:持有資源,生產(chǎn)產(chǎn)品宣羊,存入容器中
    消費者:持有資源璧诵,消費掉產(chǎn)品。

容器滿了:最多裝8個雞蛋
    生產(chǎn)者:持有資源仇冯,暫停執(zhí)行——直到容器還能繼續(xù)裝之宿。
        鎖對象.wait()——>會讓線程進入阻塞狀態(tài)。暫停執(zhí)行苛坚。notify()比被,notifyAll()
    消費者:持有資源,直接消費泼舱。等缀。
    
容器空了:最少0個。
    生產(chǎn)者:持有資源娇昙,生產(chǎn)项滑,存入。涯贞。
    消費者:持有資源,暫停執(zhí)行——直到容器中有產(chǎn)品
        鎖對象.wait()——>會讓線程進入阻塞狀態(tài)危喉。暫停執(zhí)行宋渔。notify(),notifyAll()
        
        

代碼分析:

1辜限、產(chǎn)品類:Egg()-->id
2皇拣、產(chǎn)生者:線程
    cpu執(zhí)行,run()-->生產(chǎn)雞蛋薄嫡,裝入容器
3氧急、消費者:線程
    cpu執(zhí)行,run()-->從容器中獲取雞蛋毫深,吃掉(打印吩坝。。)

容器對象:

? Class實現(xiàn)容器

? 數(shù)組: Egg[] arr = new Egg[8];

? 集合:棧哑蔫,后進先出

同步的代碼:

? 鎖的是容器對象:

wait()和sleep()方法的區(qū)別:

  • 出處不同:
    • sleep()方法是Thread類中定義的钉寝。
    • wait()方法是Object類中定義的弧呐。
  • 解除阻塞的方式不同
    • sleep()是時間到,自己醒嵌纲。
    • wait()方法等待被喚醒:notify()俘枫,或者是notifyAll()
  • 對鎖資源的釋放情況
    • sleep(),不釋放
    • wait()逮走,釋放
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸠蚪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子师溅,更是在濱河造成了極大的恐慌茅信,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件险胰,死亡現(xiàn)場離奇詭異汹押,居然都是意外死亡,警方通過查閱死者的電腦和手機起便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門棚贾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人榆综,你說我怎么就攤上這事妙痹。” “怎么了鼻疮?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵怯伊,是天一觀的道長。 經(jīng)常有香客問我判沟,道長耿芹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任挪哄,我火速辦了婚禮吧秕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迹炼。我一直安慰自己砸彬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布斯入。 她就那樣靜靜地躺著砂碉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刻两。 梳的紋絲不亂的頭發(fā)上增蹭,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音闹伪,去河邊找鬼沪铭。 笑死壮池,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杀怠。 我是一名探鬼主播椰憋,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赔退!你這毒婦竟也來了橙依?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤硕旗,失蹤者是張志新(化名)和其女友劉穎窗骑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漆枚,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡创译,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了墙基。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片软族。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖残制,靈堂內(nèi)的尸體忽然破棺而出立砸,到底是詐尸還是另有隱情,我是刑警寧澤初茶,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布颗祝,位于F島的核電站,受9級特大地震影響恼布,放射性物質(zhì)發(fā)生泄漏螺戳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一折汞、第九天 我趴在偏房一處隱蔽的房頂上張望温峭。 院中可真熱鬧,春花似錦字支、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至栗菜,卻和暖如春欠雌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疙筹。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工富俄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留禁炒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓霍比,卻偏偏與公主長得像幕袱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悠瞬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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

  • Java多線程學(xué)習(xí) [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,957評論 1 18
  • 本文主要講了java中多線程的使用方法们豌、線程同步、線程數(shù)據(jù)傳遞浅妆、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法望迎、概述等。 首先講...
    李欣陽閱讀 2,454評論 1 15
  • 本文出自 Eddy Wiki 凌外,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,116評論 0 14
  • 林炳文Evankaka原創(chuàng)作品辩尊。轉(zhuǎn)載自http://blog.csdn.net/evankaka 本文主要講了ja...
    ccq_inori閱讀 654評論 0 4
  • 本文主要介紹線程的定義,創(chuàng)建康辑,使用摄欲,停止,狀態(tài)圖和常用方法晾捏。主要用于概念掃盲和梳理蒿涎。多進程是指操作系統(tǒng)能同時運行多...
    stoneyang94閱讀 1,188評論 2 5