線程提問的點

Thread類的sleep()方法和對象的wait()方法都可以讓線程暫停執(zhí)行,它們有什么區(qū)別?

sleep()方法(休眠)是線程類(Thread)的靜態(tài)方法撵儿,調(diào)用此方法會讓當前線程暫停執(zhí)行指定的時間,將執(zhí)行機會(CPU)讓給其他線程,但是對象的鎖依然保持,因此休眠時間結(jié)束后會自動恢復间景。wait()是Object類的方法,調(diào)用對象的wait()方法導致當前線程放棄對象的鎖(線程暫停執(zhí)行)艺智,進入對象的等待池(wait pool)倘要,只有調(diào)用對象的notify()方法(或notifyAll()方法)時才能喚醒等待池中的線程進入等鎖池(lock pool),如果線程重新獲得對象的鎖就可以進入就緒狀態(tài).

線程的sleep()方法和yield()方法有什么區(qū)別十拣?
  • sleep()方法給其他線程運行機會時不考慮線程的優(yōu)先級封拧,因此會給低優(yōu)先級的線程以運行的機會;yield()方法只會給相同優(yōu)先級或更高優(yōu)先級的線程以運行的機會夭问;
  • 線程執(zhí)行sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài)泽西,而執(zhí)行yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài);
  • sleep()方法聲明拋出InterruptedException缰趋,而yield()方法沒有聲明任何異常捧杉;
  • sleep()方法比yield()方法(跟操作系統(tǒng)CPU調(diào)度相關)具有更好的可移植性
當一個線程進入一個對象的synchronized方法A之后,其它線程是否可進入此對象的synchronized方法B秘血?

不能味抖。其它線程只能訪問該對象的非同步方法,同步方法則不能進入灰粮。因為非靜態(tài)方法上的synchronized修飾符要求執(zhí)行方法時要獲得對象的鎖仔涩,如果已經(jīng)進入A方法說明對象鎖已經(jīng)被取走,那么試圖進入B方法的線程就只能在等鎖池(注意不是等待池哦)中等待對象的鎖粘舟。

請說出與線程同步以及線程調(diào)度相關的方法
  • wait():使一個線程處于等待(阻塞)狀態(tài)熔脂,并且釋放所持有的對象的鎖佩研;
  • sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法锤悄,調(diào)用此方法要處理InterruptedException異常韧骗;
  • notify():喚醒一個處于等待狀態(tài)的線程嘉抒,當然在調(diào)用此方法的時候零聚,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程些侍,而且與優(yōu)先級無關隶症;
  • notityAll():喚醒所有處于等待狀態(tài)的線程,該方法并不是將對象的鎖給所有線程岗宣,而是讓它們競爭蚂会,只有獲得鎖的線程才能進入就緒狀態(tài);
synchronized關鍵字的用法耗式?

synchronized關鍵字可以將對象或者方法標記為同步胁住,以實現(xiàn)對對象和方法的互斥訪問,可以用synchronized(對象) { … }定義同步代碼塊刊咳,或者在聲明方法時將synchronized作為方法的修飾符彪见。在第60題的例子中已經(jīng)展示了synchronized關鍵字的用法

舉例說明同步和異步

如果系統(tǒng)中存在臨界資源(資源數(shù)量少于競爭資源的線程數(shù)量的資源),例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到娱挨,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了余指,那么這些數(shù)據(jù)就必須進行同步存取(數(shù)據(jù)庫操作中的排他鎖就是最好的例子)跷坝。當應用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法酵镜,并且不希望讓程序等待方法的返回時,就應該使用異步編程柴钻,在很多情況下采用異步途徑往往更有效率淮韭。事實上,所謂的同步就是指阻塞式操作贴届,而異步就是非阻塞式操作缸濒。

啟動一個線程是調(diào)用run()還是start()方法?

啟動一個線程是調(diào)用start()方法粱腻,使線程所代表的虛擬處理機處于可運行狀態(tài)庇配,這意味著它可以由JVM 調(diào)度并執(zhí)行,這并不意味著線程就會立即運行绍些。run()方法是線程啟動后要進行回調(diào)(callback)的方法捞慌。

什么是線程池(thread pool)?

線程池顧名思義就是事先創(chuàng)建若干個可執(zhí)行的線程放入一個池(容器)中柬批,需要的時候從池中獲取線程不用自行創(chuàng)建啸澡,使用完畢不需要銷毀線程而是放回池中袖订,從而減少創(chuàng)建和銷毀線程對象的開銷。

簡述synchronized 和java.util.concurrent.locks.Lock的異同嗅虏?

Lock是Java 5以后引入的新的API洛姑,和關鍵字synchronized相比主要相同點:Lock 能完成synchronized所實現(xiàn)的所有功能;主要不同點:Lock有比synchronized更精確的線程語義和更好的性能皮服,而且不強制性的要求一定要獲得鎖楞艾。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放龄广,并且最好在finally 塊中釋放(這是釋放外部資源的最好的地方)硫眯。

線程的基本狀態(tài)以及狀態(tài)之間的關系?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末择同,一起剝皮案震驚了整個濱河市两入,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敲才,老刑警劉巖裹纳,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異紧武,居然都是意外死亡剃氧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門脏里,熙熙樓的掌柜王于貴愁眉苦臉地迎上來她我,“玉大人,你說我怎么就攤上這事迫横》撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵矾踱,是天一觀的道長恨狈。 經(jīng)常有香客問我,道長呛讲,這世上最難降的妖魔是什么禾怠? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮贝搁,結(jié)果婚禮上吗氏,老公的妹妹穿的比我還像新娘。我一直安慰自己雷逆,他們只是感情好弦讽,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般往产。 火紅的嫁衣襯著肌膚如雪被碗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天仿村,我揣著相機與錄音锐朴,去河邊找鬼。 笑死蔼囊,一個胖子當著我的面吹牛焚志,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播压真,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼娩嚼,長吁一口氣:“原來是場噩夢啊……” “哼蘑险!你這毒婦竟也來了滴肿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤佃迄,失蹤者是張志新(化名)和其女友劉穎泼差,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呵俏,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡堆缘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了普碎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼肥。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖麻车,靈堂內(nèi)的尸體忽然破棺而出缀皱,到底是詐尸還是另有隱情,我是刑警寧澤动猬,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布啤斗,位于F島的核電站,受9級特大地震影響赁咙,放射性物質(zhì)發(fā)生泄漏钮莲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一彼水、第九天 我趴在偏房一處隱蔽的房頂上張望崔拥。 院中可真熱鬧,春花似錦凤覆、人聲如沸链瓦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澡绩。三九已至稽揭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肥卡,已是汗流浹背溪掀。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留步鉴,地道東北人揪胃。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像氛琢,于是被迫代替她去往敵國和親喊递。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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

  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,335評論 3 87
  • Java多線程學習 [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,952評論 1 18
  • 本文主要講了java中多線程的使用方法阳似、線程同步骚勘、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應的一些線程函數(shù)用法撮奏、概述等俏讹。 首先講...
    李欣陽閱讀 2,442評論 1 15
  • 一、進程和線程 進程 進程就是一個執(zhí)行中的程序?qū)嵗蟮酰總€進程都有自己獨立的一塊內(nèi)存空間泽疆,一個進程中可以有多個線程。...
    阿敏其人閱讀 2,609評論 0 13
  • 寫在前面的話: 這篇博客是我從這里“轉(zhuǎn)載”的玲献,為什么轉(zhuǎn)載兩個字加“”呢殉疼?因為這絕不是簡單的復制粘貼,我花了五六個小...
    SmartSean閱讀 4,711評論 12 45