一、start()與run()方法? ? ? ?
? ? start()方法異步執(zhí)行,run()同步執(zhí)行。使用start()時(shí),系統(tǒng)會(huì)啟動(dòng)一個(gè)新的線程。當(dāng)使用run()時(shí),系統(tǒng)會(huì)在當(dāng)前線程中執(zhí)行。不會(huì)啟動(dòng)新的線程。? ? 執(zhí)行start()方法的順序不代表線程啟動(dòng)的順序。
? ? start()方法直接執(zhí)行線程中的run()方法。
二、isAlive()方法
? ??isAlive()測試線程是否處于活動(dòng)狀態(tài)?;顒?dòng)狀態(tài)即線程已啟動(dòng)且尚未終止的狀態(tài)。如果線程處于正在運(yùn)行或準(zhǔn)備開始運(yùn)行的狀態(tài),就認(rèn)為線程是“存活”的。
三、getStackTrace()與 getAllStackTrace()
? ? 返回一個(gè)表示該線程堆棧跟蹤元素?cái)?shù)組。如果該線程尚未啟動(dòng)或已經(jīng)終止,則該方法將返回一個(gè)零長度數(shù)組。如果返回的數(shù)組不是零長度的,則其第一個(gè)元素代表堆棧頂,它是該數(shù)組中最新的方法調(diào)用。最后一個(gè)元素代表堆棧底,是該數(shù)組中最舊的方法調(diào)用。
四、interrupt(),isInterrupted()與interrupted()
? ??interrupt()中斷當(dāng)前的線程。isInterrupted()實(shí)例方法,判定該線程實(shí)例是否已中斷,檢測后,不清楚中斷狀態(tài)。interrupted()靜態(tài)方法,判定當(dāng)前線程是否已中斷,檢測中斷后,會(huì)清除中斷狀態(tài)。
五、中斷線程的方法
? ? 1.使用interrupt()方法中斷線程。在主線程中中斷新線程,在新線程中檢測當(dāng)前線程是否中斷。
? ? 2.在sleep狀態(tài)下停止線程。先調(diào)用interrupt(),在調(diào)用sleep(),會(huì)出現(xiàn)中斷異常,處理此異常實(shí)現(xiàn)終止線程。
六、線程的優(yōu)先級(jí)
? ? 1.線程的優(yōu)先級(jí)具有繼承性。
? ? 2.高優(yōu)先級(jí)的線程獲取的操作系統(tǒng)資源更多,執(zhí)行的更快。
? ? 3.操作系統(tǒng)分配資源具有隨機(jī)性,并不是線程的優(yōu)先級(jí)越高,就一定先執(zhí)行完。
七、守護(hù)線程(daemon)
? ? 1.守護(hù)線程是一種特殊的線程,當(dāng)進(jìn)程中不存在非守護(hù)線程(即用戶線程),守護(hù)線程自動(dòng)銷毀。守護(hù)線程的作用是為其他線程的運(yùn)行提供便利服務(wù),最典型的應(yīng)用就是GC。