java中的多線程如何實(shí)現(xiàn)如何使用
虎嗅薔薇
發(fā)布于 云南 2025-09-28 · 730瀏覽

在 Java 中,實(shí)現(xiàn)和使用多線程主要有三種常見方式:繼承 Thread 類、實(shí)現(xiàn) Runnable 接口、實(shí)現(xiàn) Callable 接口(配合 Future)。以下是具體實(shí)現(xiàn)方法和使用示例:

一、繼承 Thread 類

通過繼承Thread類并重寫run()方法定義線程任務(wù),調(diào)用start()方法啟動(dòng)線程(而非直接調(diào)用run())。

特點(diǎn)

簡(jiǎn)單直接,但 Java 單繼承限制,無法再繼承其他類。

二、實(shí)現(xiàn) Runnable 接口

實(shí)現(xiàn)Runnable接口的run()方法,將實(shí)例傳入Thread構(gòu)造器啟動(dòng)線程(推薦,避免單繼承限制)。

特點(diǎn)

可多實(shí)現(xiàn),適合多個(gè)線程共享一個(gè)任務(wù)實(shí)例(如共享資源)。

三、實(shí)現(xiàn) Callable 接口(帶返回值)

Callable接口類似Runnable,但call()方法可返回結(jié)果并拋出異常,需配合Future獲取結(jié)果。

特點(diǎn)

支持返回結(jié)果和異常處理,適合需要線程執(zhí)行結(jié)果的場(chǎng)景。

四、線程池(推薦的線程管理方式)

頻繁創(chuàng)建銷毀線程效率低,實(shí)際開發(fā)中常用線程池管理線程(通過ExecutorService)。

常用線程池

newFixedThreadPool(n):固定大小線程池

newCachedThreadPool():可緩存線程池(自動(dòng)擴(kuò)縮容)

newSingleThreadExecutor():?jiǎn)尉€程池(任務(wù)串行執(zhí)

核心方法與注意事項(xiàng)

  1. 啟動(dòng)線程:必須調(diào)用start()(底層會(huì)調(diào)用run()并創(chuàng)建新線程),直接調(diào)用run()會(huì)在當(dāng)前線程執(zhí)行,不啟動(dòng)新線程。
  2. 線程狀態(tài):新建(New)→ 就緒(Runnable)→ 運(yùn)行(Running)→ 阻塞(Blocked/Waiting/Timed Waiting)→ 終止(Terminated)。
  3. 常用方法
    • Thread.sleep(long ms):當(dāng)前線程休眠(不釋放鎖)。
    • Thread.yield():禮讓線程(讓當(dāng)前線程進(jìn)入就緒狀態(tài),重新競(jìng)爭(zhēng) CPU)。
    • join():等待該線程執(zhí)行完畢后再繼續(xù)當(dāng)前線程。
    • setPriority(int):設(shè)置優(yōu)先級(jí)(1-10,默認(rèn) 5,高優(yōu)先級(jí)概率高,非絕對(duì))。
  4. 線程安全:多線程共享資源時(shí)需加鎖(synchronized或Lock),避免數(shù)據(jù)不一致。

通過以上方式,可實(shí)現(xiàn) Java 多線程的創(chuàng)建、啟動(dòng)和管理,根據(jù)場(chǎng)景選擇合適的方式(推薦Runnable+ 線程池)。

虎嗅薔薇
陽光瀝肩頭,仿佛自由人。
瀏覽 730
相關(guān)推薦
最新評(píng)論
贊過的人
評(píng)論加載中...

暫無評(píng)論,快來評(píng)論吧!