java_線程

線程實(shí)現(xiàn)

1谜喊、擴(kuò)展java.lang.Thread類(lèi)格带。
此類(lèi)中有個(gè)run()方法赎懦,應(yīng)該注意其用法:
public void run()
如果該線程是使用獨(dú)立的Runnable運(yùn)行對(duì)象構(gòu)造的鞍帝,則調(diào)用該Runnable對(duì)象的run方法升酣;否則舷暮,該方法不執(zhí)行任何操作并返回。
Thread的子類(lèi)應(yīng)該重寫(xiě)該方法噩茄。

2下面、實(shí)現(xiàn)java.lang.Runnable接口。
void run()
使用實(shí)現(xiàn)接口Runnable的對(duì)象創(chuàng)建一個(gè)線程時(shí)巢墅,啟動(dòng)該線程將導(dǎo)致在獨(dú)立執(zhí)行的線程中調(diào)用對(duì)象的run方法诸狭。
方法run的常規(guī)協(xié)定是券膀,它可能執(zhí)行任何所需的操作。

獲取當(dāng)前線程的對(duì)象的方法是:Thread.currentThread()驯遇;
睡眠的實(shí)現(xiàn):調(diào)用靜態(tài)方法芹彬。

    try {            
         Thread.sleep(1000);        
    } catch (InterruptedException e) {  
         e.printStackTrace();         
    }

Java中的鎖

當(dāng)數(shù)據(jù)競(jìng)爭(zhēng)存在的時(shí)候,最簡(jiǎn)單的解決辦法就是加鎖叉庐。鎖機(jī)制限制在同一時(shí)間只允許一個(gè)線程訪問(wèn)產(chǎn)生競(jìng)爭(zhēng)的數(shù)據(jù)的臨界區(qū)舒帮。Java語(yǔ)言中的 synchronized關(guān)鍵字可以為一個(gè)代碼塊或是方法進(jìn)行加鎖。任何Java對(duì)象都有一個(gè)自己的監(jiān)視器陡叠,可以進(jìn)行加鎖和解鎖操作玩郊。當(dāng)受到 synchronized關(guān)鍵字保護(hù)的代碼塊或方法被執(zhí)行的時(shí)候,就說(shuō)明當(dāng)前線程已經(jīng)成功的獲取了對(duì)象的監(jiān)視器上的鎖枉阵。當(dāng)代碼塊或是方法正常執(zhí)行完成或是發(fā)生異常退出的時(shí)候译红,當(dāng)前線程所獲取的鎖會(huì)被自動(dòng)釋放。一個(gè)線程可以在一個(gè)Java對(duì)象上加多次鎖兴溜。同時(shí)JVM保證了在獲取鎖之前和釋放鎖之后侦厚,變量的值是與主存中的內(nèi)容同步的。

線程的同步

在有些情況下拙徽,僅依靠線程之間對(duì)數(shù)據(jù)的互斥訪問(wèn)是不夠的刨沦。有些線程之間存在協(xié)作關(guān)系,需要按照一定的協(xié)議來(lái)協(xié)同完成某項(xiàng)任務(wù)膘怕,比如典型的生產(chǎn)者-消費(fèi)者模式想诅。這種情況下就需要用到Java提供的線程之間的等待-通知機(jī)制。當(dāng)線程所要求的條件不滿(mǎn)足時(shí)岛心,就進(jìn)入等待狀態(tài)来破;而另外的線程則負(fù)責(zé)在合適的時(shí)機(jī)發(fā)出通知來(lái)喚醒等待中的線程。Java中的java.lang.Object類(lèi)中的[wait]

volatile

用volatile修飾的變量忘古,線程在每次使用變量的時(shí)候讳癌,都會(huì)讀取變量修改后的最的值

中斷線程

通過(guò)一個(gè)線程對(duì)象的interrupt()方法可以向該線程發(fā)出一個(gè)中斷請(qǐng)求。中斷請(qǐng)求是一種線程之間的協(xié)作方式存皂。當(dāng)線程A通過(guò)調(diào)用線程B的interrupt()方法來(lái)發(fā)出中斷請(qǐng)求的時(shí)候晌坤,線程A 是在請(qǐng)求線程B的注意。線程B應(yīng)該在方便的時(shí)候來(lái)處理這個(gè)中斷請(qǐng)求旦袋,當(dāng)然這不是必須的骤菠。當(dāng)中斷發(fā)生的時(shí)候,線程對(duì)象中會(huì)有一個(gè)標(biāo)記來(lái)記錄當(dāng)前的中斷狀態(tài)疤孕。通過(guò)isInterrupted()方法可以判斷是否有中斷請(qǐng)求發(fā)生商乎。如果當(dāng)中斷請(qǐng)求發(fā)生的時(shí)候,線程正處于阻塞狀態(tài)祭阀,那么這個(gè)中斷請(qǐng)求會(huì)導(dǎo)致該線程退出阻塞狀態(tài)鹉戚。
volatile 變量對(duì)所有線程是立即可見(jiàn)的,對(duì) volatile 變量所有的寫(xiě)操作都能立即反應(yīng)到
其他線程之中,換句話說(shuō):volatile 變量在各個(gè)線程中是一致的,所以基于 volatile 變量的運(yùn)算是線程安全的

ThreadLocal

ThreadLocal是一個(gè)線程內(nèi)部的數(shù)據(jù)存儲(chǔ)類(lèi)鲜戒,通過(guò)它可以在指定的線程中存儲(chǔ)數(shù)據(jù),數(shù)據(jù)存儲(chǔ)以后抹凳,只有在指定線程中可以獲取到存儲(chǔ)的數(shù)據(jù)遏餐,對(duì)于其它線程來(lái)說(shuō)無(wú)法獲取到數(shù)據(jù)

android 線程池

Android_ThreadPool

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赢底,隨后出現(xiàn)的幾起案子失都,更是在濱河造成了極大的恐慌,老刑警劉巖幸冻,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粹庞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡洽损,警方通過(guò)查閱死者的電腦和手機(jī)庞溜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碑定,“玉大人强缘,你說(shuō)我怎么就攤上這事〔桓担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵赏胚,是天一觀的道長(zhǎng)访娶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)觉阅,這世上最難降的妖魔是什么崖疤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮典勇,結(jié)果婚禮上劫哼,老公的妹妹穿的比我還像新娘。我一直安慰自己割笙,他們只是感情好权烧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著伤溉,像睡著了一般般码。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乱顾,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天板祝,我揣著相機(jī)與錄音,去河邊找鬼走净。 笑死券时,一個(gè)胖子當(dāng)著我的面吹牛孤里,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橘洞,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼捌袜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了震檩?” 一聲冷哼從身側(cè)響起琢蛤,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抛虏,沒(méi)想到半個(gè)月后博其,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迂猴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年慕淡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沸毁。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峰髓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出息尺,到底是詐尸還是另有隱情携兵,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布搂誉,位于F島的核電站徐紧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏炭懊。R本人自食惡果不足惜并级,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侮腹。 院中可真熱鬧嘲碧,春花似錦、人聲如沸父阻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)加矛。三九已至钠署,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荒椭,已是汗流浹背谐鼎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸棍。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓身害,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親草戈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子塌鸯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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

  • 下面是我自己收集整理的Java線程相關(guān)的面試題,可以用它來(lái)好好準(zhǔn)備面試唐片。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 14,836評(píng)論 14 507
  • 不管你是新程序員還是老手丙猬,你一定在面試中遇到過(guò)有關(guān)線程的問(wèn)題。Java語(yǔ)言一個(gè)重要的特點(diǎn)就是內(nèi)置了對(duì)并發(fā)的支持费韭,讓...
    堯淳閱讀 1,594評(píng)論 0 25
  • 作者:加布瑞埃拉·澤文 開(kāi)始時(shí)間:2016.6.29 結(jié)束時(shí)間:2016.7.2 A.J居住在艾麗絲島茧球,中年喪...
    予不語(yǔ)閱讀 1,067評(píng)論 0 1
  • Structured Streaming 編程指南 概述 快速示例 Programming Model (編程模型...
    草里有只羊閱讀 1,675評(píng)論 0 2
  • 某月某天,某張疲憊的臉星持; 某分某秒抢埋,某座心酸的橋。 花兒一片督暂,落滿(mǎn)青藤園揪垄,揮淚作別的那些懵懂的騷年÷呶蹋可記否:刻滿(mǎn)三...
    Vicar偉光閱讀 395評(píng)論 6 2