Java 線程 - 創(chuàng)建線程的方式及實(shí)現(xiàn)

學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師

繼承 Thread 類創(chuàng)建線程類

  • 定義 Thread 類的子類,并重寫該類的 run 方法,該 run 方法的方法體就代表了線程要完成的任務(wù)易遣。因此把 run() 方法稱為執(zhí)行體吹散。
  • 創(chuàng)建 Thread 子類的實(shí)例丸升,即創(chuàng)建了線程對象界赔。
  • 調(diào)用線程對象的 start() 方法來啟動該線程。

通過 Runnable 接口創(chuàng)建線程類

  • 定義 Runnable 接口的實(shí)現(xiàn)類雏吭,并重寫該接口的 run() 方法锁施,該 run() 方法的方法體同樣是該線程的線程執(zhí)行體。
  • 創(chuàng)建 Runnable 實(shí)現(xiàn)類的實(shí)例,并依此實(shí)例作為 Thread 的 target 來創(chuàng)建 Thread 對象沾谜,該 Thread 對象才是真正的線程對象膊毁。
  • 調(diào)用線程對象的 start() 方法來啟動該線程。

通過 Callable 和 Future 創(chuàng)建線程

  • 創(chuàng)建 Callable 接口的實(shí)現(xiàn)類基跑,并實(shí)現(xiàn) call() 方法婚温,該 call() 方法將作為線程執(zhí)行體,并且有返回值媳否。
  • 創(chuàng)建 Callable 實(shí)現(xiàn)類的實(shí)例栅螟,使用 FutureTask 類來包裝 Callable 對象,該 FutureTask 對象封裝了該 Callable 對象的 call() 方法的返回值篱竭。
  • 使用 FutureTask 對象作為 Thread 對象的 target 創(chuàng)建并啟動新線程力图。
  • 調(diào)用 FutureTask 對象的 get() 方法來獲得子線程執(zhí)行結(jié)束后的返回值

采用實(shí)現(xiàn) Runnable、Callable 接口的方式創(chuàng)見多線程時(shí):

  • 優(yōu)勢是:線程類只是實(shí)現(xiàn)了 Runnable 接口或 Callable 接口掺逼,還可以繼承其他類吃媒。在這種方式下,多個(gè)線程可以共享同一個(gè) target 對象吕喘,所以非常適合多個(gè)相同線程來處理同一份資源的情況赘那,從而可以將 CPU、代碼和數(shù)據(jù)分開氯质,形成清晰的模型募舟,較好地體現(xiàn)了面向?qū)ο蟮乃枷搿?/li>
  • 劣勢是:編程稍微復(fù)雜,如果要訪問當(dāng)前線程闻察,則必須使用 Thread.currentThread() 方法拱礁。

使用繼承 Thread 類的方式創(chuàng)建多線程時(shí):

  • 優(yōu)勢是:編寫簡單,如果需要訪問當(dāng)前線程辕漂,則無需使用 Thread.currentThread() 方法呢灶,直接使用 this 即可獲得當(dāng)前線程。
  • 劣勢是:線程類已經(jīng)繼承了 Thread 類钮热,所以不能再繼承其他父類填抬。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隧期,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赘娄,老刑警劉巖仆潮,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣臼,居然都是意外死亡性置,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門揍堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹏浅,“玉大人嗅义,你說我怎么就攤上這事∫遥” “怎么了之碗?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長季希。 經(jīng)常有香客問我褪那,道長,這世上最難降的妖魔是什么式塌? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任博敬,我火速辦了婚禮,結(jié)果婚禮上峰尝,老公的妹妹穿的比我還像新娘偏窝。我一直安慰自己,他們只是感情好武学,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布囚枪。 她就那樣靜靜地躺著,像睡著了一般劳淆。 火紅的嫁衣襯著肌膚如雪链沼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天沛鸵,我揣著相機(jī)與錄音括勺,去河邊找鬼。 笑死曲掰,一個(gè)胖子當(dāng)著我的面吹牛疾捍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栏妖,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼乱豆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吊趾?” 一聲冷哼從身側(cè)響起宛裕,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎论泛,沒想到半個(gè)月后揩尸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屁奏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年岩榆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勇边,死狀恐怖犹撒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粒褒,我是刑警寧澤识颊,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站怀浆,受9級特大地震影響谊囚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜执赡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一镰踏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沙合,春花似錦奠伪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至究履,卻和暖如春滤否,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背最仑。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工藐俺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泥彤。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓欲芹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吟吝。 傳聞我的和親對象是個(gè)殘疾皇子菱父,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,091評論 0 23
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    小徐andorid閱讀 2,801評論 3 53
  • 下面是我自己收集整理的Java線程相關(guān)的面試題,可以用它來好好準(zhǔn)備面試剑逃。 參考文檔:-《Java核心技術(shù) 卷一》-...
    阿呆變Geek閱讀 14,779評論 14 507
  • ??一個(gè)任務(wù)通常就是一個(gè)程序浙宜,每個(gè)運(yùn)行中的程序就是一個(gè)進(jìn)程。當(dāng)一個(gè)程序運(yùn)行時(shí)炕贵,內(nèi)部可能包含了多個(gè)順序執(zhí)行流梆奈,每個(gè)順...
    OmaiMoon閱讀 1,664評論 0 12
  • 一.線程與進(jìn)程相關(guān) 1.進(jìn)程 ??定義:進(jìn)程是具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動,進(jìn)程是操作系統(tǒng)分...
    Geeks_Liu閱讀 1,710評論 2 4