JAVA高并發(fā)程序設(shè)計(jì)(一)

一码秉、同步(Synchronous)和異步(Asynchronous)

? ? ? ? ? 同步和異步通常用來形容一次方法調(diào)用,同步方法,調(diào)用者必須等到方法調(diào)用返回后厘肮,才能繼續(xù)后續(xù)的行為,異步方法調(diào)用會立即返回睦番,調(diào)用者就可以繼續(xù)后續(xù)的操作类茂,



二耍属、并發(fā)和并行?

? ? ? ? 并發(fā)和并行都可以表示兩個或多個任務(wù)一起執(zhí)行,但偏重點(diǎn)點(diǎn)不同巩检,并發(fā)偏重于多個任務(wù)交替執(zhí)行厚骗,而多個任務(wù)之間有可能還是串行的。而并行是真正意義上的“同時執(zhí)行”兢哭。



三领舰、阻塞(Blocking)和非阻塞(Non-Blocking)

? ? ? ? 一個線程占用了臨界資源,那么其他所有需要這個資源的線程就必須在這個臨界區(qū)中進(jìn)行等待迟螺,等待會導(dǎo)致線程掛起冲秽,這種情況就是阻塞,非阻塞的意思與之相反矩父。

四锉桑、線程的狀態(tài)?


線程的狀態(tài)?

1、線程的啟動是調(diào)用start()方法窍株,而不是run()方法民轴。

2、線程的終止球订、不用stop()是因?yàn)閟top()方法太過暴力杉武,強(qiáng)行把執(zhí)行到一半的線程終止,可能會引起數(shù)據(jù)不一致的問題辙售,一般我們定義一個線程終止的方法轻抱,告知線程何時停止即可。

3旦部、線程中斷:線程中斷并不會使線程立即退出祈搜,而是給線程發(fā)一個通知,告知目標(biāo)線程士八,有人希望你退出容燕,至于目標(biāo)線程接到通知后如何處理,則完全由目標(biāo)線程自行決定婚度。與線程中斷的有三個方法

Thread.interrupt(): // 中斷線程

Thread.isInterrupted()://判斷是否中斷

Thread.Interrupted():// 判斷是否中斷蘸秘,并清除當(dāng)前中斷狀態(tài)

注:Thread.sleep()方法會拋出一個InterruptedException中斷異常,這不是運(yùn)行時異常蝗茁,也就是說程序必須捕獲并處理它醋虏。當(dāng)線程在休眠時,如果被中斷哮翘,這個異常會產(chǎn)生颈嚼。?

4、等待(wait)和通知(notify) 注:這兩個方法是在Object類中的饭寺,意味著任何對象都可以調(diào)用這兩個方法阻课。

obj.wait()方法叫挟,線程會停止繼續(xù)執(zhí)行,轉(zhuǎn)為等待狀態(tài)限煞,直到其他線程調(diào)用obj.notify()方法為止抹恳。調(diào)用object.wait()方法,就會進(jìn)入object對象的等待隊(duì)列署驻,當(dāng)調(diào)用object.notify()時奋献,會從這個等待隊(duì)列中,隨機(jī)選擇一個線程硕舆,并將其喚醒秽荞,這個選擇是不公平的,完全是隨機(jī)的抚官。notifyAll()會喚醒等待隊(duì)列里的所有線程扬跋,而不是隨機(jī)選擇一個線程。

5凌节、掛起(suspend)和繼續(xù)執(zhí)行(resume)線程

? ? suspend與resume是一組相反的操作钦听,調(diào)用suspend方法后的線程,必須等到resume方法調(diào)用后倍奢,才能繼續(xù)執(zhí)行朴上。

注:此方法已經(jīng)被廢棄,并不推薦使用卒煞,因?yàn)閟uspend()在導(dǎo)致線程暫停的同時痪宰,并不會去釋放任何資源。此? 時畔裕,若其他任何線程想要訪問被它暫用的鎖時衣撬,都會被牽連,導(dǎo)致無法正常繼續(xù)運(yùn)行扮饶。同時具练,若resume()方法在suspend()前就執(zhí)行了,那么被suspend()方法掛起的線程甜无,很難有機(jī)會被繼續(xù)執(zhí)行扛点,更為嚴(yán)重的是,它所占用的鎖不會被釋放岂丘,可能導(dǎo)致整個系統(tǒng)工作不正常陵究。同時,對于被掛起的線程元潘,從線程狀態(tài)上看畔乙,還是Runnable,會嚴(yán)重影響我們的判斷翩概。

6牲距、等待線程結(jié)束(join)和謙讓(yield)

? ?join有兩種情況:

Thread.join()?表示它會一直阻塞當(dāng)前線程,直到目標(biāo)線程執(zhí)行完畢钥庇。

Thread.join(millis)?給出了最大等待時間牍鞠,單位毫秒,如果超過給定時間目標(biāo)線程還在執(zhí)行评姨,當(dāng)前線程也會因?yàn)椤暗炔患啊蹦咽觯^續(xù)下執(zhí)行。

? Thread.yield()它會使當(dāng)前線程讓出CPU吐句,

注意:調(diào)用Thread.yield()方法后胁后,線程只是會讓CPU,但并不代表當(dāng)前線程不執(zhí)行嗦枢,當(dāng)前線程還是會參與CPU的爭奪攀芯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市文虏,隨后出現(xiàn)的幾起案子侣诺,更是在濱河造成了極大的恐慌,老刑警劉巖氧秘,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件年鸳,死亡現(xiàn)場離奇詭異,居然都是意外死亡丸相,警方通過查閱死者的電腦和手機(jī)搔确,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灭忠,“玉大人膳算,你說我怎么就攤上這事「瑁” “怎么了畦幢?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缆蝉。 經(jīng)常有香客問我宇葱,道長,這世上最難降的妖魔是什么刊头? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任黍瞧,我火速辦了婚禮,結(jié)果婚禮上原杂,老公的妹妹穿的比我還像新娘印颤。我一直安慰自己,他們只是感情好穿肄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布年局。 她就那樣靜靜地躺著际看,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矢否。 梳的紋絲不亂的頭發(fā)上仲闽,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音僵朗,去河邊找鬼赖欣。 笑死,一個胖子當(dāng)著我的面吹牛验庙,可吹牛的內(nèi)容都是我干的顶吮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼粪薛,長吁一口氣:“原來是場噩夢啊……” “哼悴了!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汗菜,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤让禀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陨界,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巡揍,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年菌瘪,在試婚紗的時候發(fā)現(xiàn)自己被綠了腮敌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡俏扩,死狀恐怖糜工,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情录淡,我是刑警寧澤捌木,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站嫉戚,受9級特大地震影響刨裆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜彬檀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一帆啃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窍帝,春花似錦努潘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽报慕。三九已至,卻和暖如春贴膘,著一層夾襖步出監(jiān)牢的瞬間卖子,已是汗流浹背略号。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工刑峡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人玄柠。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓突梦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親羽利。 傳聞我的和親對象是個殘疾皇子宫患,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

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

  • 一、并發(fā) 進(jìn)程:每個進(jìn)程都擁有自己的一套變量 線程:線程之間共享數(shù)據(jù) 1.線程 Java中為多線程任務(wù)提供了很多的...
    SeanMa閱讀 2,419評論 0 11
  • 一、線程的生命周期 線程狀態(tài)轉(zhuǎn)換圖: 1匾浪、新建狀態(tài) 用new關(guān)鍵字和Thread類或其子類建立一個線程對象后皇帮,該線...
    我是嘻哈大哥閱讀 893評論 0 8
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,952評論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步蛋辈、線程數(shù)據(jù)傳遞属拾、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等冷溶。 首先講...
    李欣陽閱讀 2,444評論 1 15
  • 1 肝膽濕熱? 可板藍(lán)根也太甜了吧 這或許是我更喜歡喝999的原因渐白。 2 嗯! 金霉素眼膏比紅霉素眼膏好用逞频! 3 ...
    小老太298閱讀 145評論 0 0