1.什么是線程翻默?
現(xiàn)代操作系統(tǒng)調(diào)度的最小單元是線程,在一個(gè)進(jìn)程里面可以創(chuàng)建多個(gè)線程恰起,這些線程都有各自的計(jì)數(shù)器修械、堆棧和局部變量等屬性,并且能夠訪問共享的內(nèi)存變量检盼,處理器在這些線程上高速切換肯污,讓使用者感覺到這些線程在同時(shí)執(zhí)行
2.多線程的好處?
1.更多的處理器核心
2.更快的響應(yīng)時(shí)間吨枉,異步任務(wù)并行執(zhí)行
3.更好的編程模型
3.線程的狀態(tài)
NEW:初始狀態(tài)蹦渣,線程被構(gòu)建,但是還沒有調(diào)用start()
RUNNABLE:運(yùn)行狀態(tài)貌亭,Java線程將操作系統(tǒng)中的就緒和運(yùn)行兩種狀態(tài)統(tǒng)稱成為運(yùn)行中
BLOCKED:阻塞狀態(tài)柬唯,表示線程阻塞于鎖
WAITING:等待狀態(tài),表示線程進(jìn)入等待狀態(tài)圃庭,進(jìn)入該狀態(tài)表示當(dāng)前線程需要等待其他線程做出的一些特定動(dòng)作
TIME_WAITING:超時(shí)等待狀態(tài)锄奢,該狀態(tài)不同于WAITING的是它是可以在指定的時(shí)間自行返回的
TREMINATED:終止?fàn)顟B(tài)失晴,表示當(dāng)前線程已經(jīng)執(zhí)行完畢
4.守護(hù)線程
守護(hù)線程是一種支持性的線程,因?yàn)樗饕挥米鞒绦蛑泻笈_(tái)調(diào)度以及支持性工作拘央。
當(dāng)一個(gè)JVM中不存在非Daemon線程的時(shí)侯涂屁,JVM將會(huì)退出
可以通過 Thread.setDaemon(true) 將線程設(shè)置為Daemon線程
5.線程的創(chuàng)建、啟動(dòng)堪滨、中斷
創(chuàng)建:線程對(duì)象的構(gòu)建胯陋,Java中的線程于Thread對(duì)象一一對(duì)應(yīng)
啟動(dòng):調(diào)用線程對(duì)象的statrt()
中斷:中斷可以理解為線程的一個(gè)標(biāo)識(shí)位屬性,它表示一個(gè)運(yùn)行中間線程是否被其他線程進(jìn)行了中斷操作袱箱,中斷好比其他線程對(duì)該線程打了個(gè)招呼遏乔,其他線程通過調(diào)用該線程的interrupt()方法對(duì)其進(jìn)行中斷。