JAVA多線程

進(jìn)程:正在運(yùn)行中的程序
線程:線程共享存儲(chǔ)空間,為了讓多個(gè)方法能夠同時(shí)運(yùn)行

單線程的優(yōu)點(diǎn):安全宜雀,但是效率不行
多線程:效率高切平,但是會(huì)有潛在的問題

線程的運(yùn)行模式

分時(shí)調(diào)度

平均分配時(shí)間

搶占模式

根據(jù)優(yōu)先級分配不同的線程時(shí)間。
優(yōu)先級高的程序占用更多的CPU時(shí)間辐董。

main 的主線程

程序從上到下執(zhí)行過程

  1. java demo
  2. 啟動(dòng) JVM悴品,運(yùn)行 Demo.main
  3. JVM 運(yùn)行方法 main,找操作系統(tǒng),開線程
  4. 對于CPU有了一個(gè)執(zhí)行的路徑简烘,運(yùn)行方法main路徑有個(gè)名字 "main"

Thread 類 線程

虛擬機(jī)允許線程并發(fā)運(yùn)行多個(gè)程序

創(chuàng)建新執(zhí)行線程有兩種方法

一種將類申明為 Thread 子類
一種是重寫 runnable 方法

線程繼承 Thread

用 start 啟動(dòng)
會(huì)自動(dòng)讓虛擬機(jī)找到 run 方法

獲取線程名字的方法 getName

每個(gè)線程都有默認(rèn)的編號名稱 Thread -0,1....
非靜態(tài)

currentThread

jvm 開啟主線程 Thread 類對象
static Thread currentThread() 返回正在執(zhí)行的線程對象

setName

應(yīng)該先改名苔严,再開啟線程
Thread.setName()

sleep

休眠制定方法
Thread.sleep(ms)

實(shí)現(xiàn) runnable 接口

重寫 run 方法
接口可以多實(shí)現(xiàn); 繼承只能單繼承

實(shí)現(xiàn) runnable 接口的好處

  1. 更加符合面向?qū)ο螅€程分為兩部分孤澎,一部分線程對象届氢,一部分線程任務(wù)
  2. 繼承 Thread 類時(shí),線程對象和線程任務(wù)耦合在一起覆旭,一旦創(chuàng)建Thread 類的子類任務(wù)退子,既是線程對象岖妄,又是線程任務(wù)。
  3. 實(shí)現(xiàn)Runnable 接口寂祥,將線程任務(wù)單獨(dú)分離出來封裝成對象衣吠,類型就是 Runnable 接口類型,Runnable 接口對線程對象和線程任務(wù)進(jìn)行解耦壤靶。

高內(nèi)聚缚俏,低耦合
讓資源實(shí)現(xiàn)共享

匿名內(nèi)部類實(shí)現(xiàn)多線程

節(jié)省代碼,但是 格式比較奇怪

線程的狀態(tài)

  1. new 至今尚未啟動(dòng)的線程: new Thread()
  2. runnable 運(yùn)行狀態(tài)贮乳,正在執(zhí)行 start()
  3. terminated 死亡狀態(tài) run() 結(jié)束 stop()(不建議)
  4. blocked 受阻塞 和運(yùn)行狀態(tài)轉(zhuǎn)換 取決于 CPU 運(yùn)行狀態(tài)
  5. timed waitting 休眠忧换,一定時(shí)間之后會(huì)自動(dòng)喚醒 運(yùn)行 sleep 的狀態(tài)、
  6. waitting 無限的等待 使用 notify 進(jìn)行 喚醒 在 object 類中


    多線程狀態(tài)轉(zhuǎn)換.png

受阻塞: 線程具有 CPU 執(zhí)行資格向拆,等待 CPU 的資源
休眠等待:線程放棄CPU的執(zhí)行資格

線程池

線程池基本概念

一個(gè)可以容納多個(gè)線程的容器亚茬,其中的線程可以反復(fù)使用,省去了頻繁創(chuàng)建線程對象的操作浓恳,無需反復(fù)創(chuàng)建線程而消耗過多資源刹缝。

緩沖池 減少資源開銷
新建和銷毀線程,會(huì)造成較大的開銷颈将,需要減少這兩種操作

JDK5 之后梢夯,內(nèi)置了線程池

JDK5 中的線程池

使用工廠類

java

public class ThreadPoolDemo{
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晴圾,隨后出現(xiàn)的幾起案子颂砸,更是在濱河造成了極大的恐慌,老刑警劉巖死姚,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件人乓,死亡現(xiàn)場離奇詭異,居然都是意外死亡都毒,警方通過查閱死者的電腦和手機(jī)色罚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來账劲,“玉大人戳护,你說我怎么就攤上這事〉拥妫” “怎么了姑尺?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵竟终,是天一觀的道長蝠猬。 經(jīng)常有香客問我,道長统捶,這世上最難降的妖魔是什么榆芦? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任柄粹,我火速辦了婚禮,結(jié)果婚禮上匆绣,老公的妹妹穿的比我還像新娘驻右。我一直安慰自己,他們只是感情好崎淳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布堪夭。 她就那樣靜靜地躺著,像睡著了一般拣凹。 火紅的嫁衣襯著肌膚如雪森爽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天嚣镜,我揣著相機(jī)與錄音爬迟,去河邊找鬼。 笑死菊匿,一個(gè)胖子當(dāng)著我的面吹牛付呕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跌捆,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼徽职,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了佩厚?” 一聲冷哼從身側(cè)響起活箕,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎可款,沒想到半個(gè)月后育韩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闺鲸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年筋讨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摸恍。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悉罕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出立镶,到底是詐尸還是另有隱情壁袄,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布媚媒,位于F島的核電站嗜逻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缭召。R本人自食惡果不足惜栈顷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一逆日、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萄凤,春花似錦室抽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惑朦,卻和暖如春神年,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背行嗤。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工已日, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅屏。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓飘千,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栈雳。 傳聞我的和親對象是個(gè)殘疾皇子护奈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

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