start()與run()
start()啟動(dòng)線程并執(zhí)行相應(yīng)的run()方法
run()子線程要執(zhí)行的代碼放入run()方法
getName()和setName()
getName()獲取此線程的名字
setName()設(shè)置此線程的名字
isAlive()
是判斷當(dāng)前線程是否處于活動(dòng)狀態(tài)?;顒?dòng)狀態(tài)就是已經(jīng)啟動(dòng)尚未終止。
currentThread()
返回代碼段正在被哪個(gè)線程調(diào)用
sleep()
主要的作用是讓當(dāng)前線程停止執(zhí)行,把cpu讓給其他線程執(zhí)行,但不會釋放對象鎖和監(jiān)控的狀態(tài),到了指定時(shí)間后線程又會自動(dòng)恢復(fù)運(yùn)行狀態(tài)
注意:線程睡眠到期自動(dòng)蘇醒,并返回到可運(yùn)行狀態(tài),不是運(yùn)行狀態(tài)。sleep()中指定的時(shí)間是線程不會運(yùn)行的最短時(shí)間。因此,sleep()方法不能保證該線程睡眠到期后就開始執(zhí)行
yield()
中文意思:放棄,屈服
一個(gè)線程調(diào)用yield()意味著告訴虛擬機(jī)自己非常樂于助人,可以把自己的位置讓給其他線程(這只是暗示,并不表絕對)。但得注意,讓出cpu并不代表當(dāng)前線程不執(zhí)行了。當(dāng)前線程讓出cpu后,還會進(jìn)行cpu資源的爭奪,但是能不能再次分配到,就不一定了
getPriority()和setPriority(intnewPriority)
這兩個(gè)方法是用于獲取當(dāng)前和設(shè)置線程的優(yōu)先級。優(yōu)先級高的線程得到的cpu多。也就是說,兩個(gè)等待的線程,優(yōu)先級高的線程容易被cpu執(zhí)行。
默認(rèn)情況下,線程的優(yōu)先級是5。線程的優(yōu)先級分為1~10等級。
getId()
取得線程唯一標(biāo)識
yield()
yield()暫停當(dāng)前方法,釋放自己擁有的CPU,線程進(jìn)入就緒狀態(tài)。
join()
所屬線程對象x正常執(zhí)行run,當(dāng)前線程z無限等待直到執(zhí)行完。常用于需要子線程的執(zhí)行結(jié)果
interrupted()
interrupted()是靜態(tài)方法:內(nèi)部實(shí)現(xiàn)是調(diào)用的當(dāng)前線程的isInterrupted(),并且會重置當(dāng)前線程的中斷狀態(tài)
isInterrupted()是實(shí)例方法,是調(diào)用該方法的對象所表示的那個(gè)線程的isInterrupted(),不會重置當(dāng)前線程的中斷狀態(tài)
它們的作用是判斷線程是否是停止?fàn)顟B(tài)
isDaeMon、setDaemon(booleanon)
java線程有兩種,一種是用戶線程,一種是守護(hù)線程。守護(hù)線程是一個(gè)特殊的線程,任何一個(gè)守護(hù)線程都是jvm中所有非守護(hù)線程的保姆。當(dāng)進(jìn)程中不存在非守護(hù)線程時(shí),守護(hù)線程會自動(dòng)銷毀。典型的守護(hù)線程就是垃圾回收線程。
第一個(gè)是判斷線程是不是守護(hù)線程,第二個(gè)是設(shè)置線程為守護(hù)線程,必須在線程start之前setDaemon(true)。
stop()
強(qiáng)制停止,已廢棄
可能釋放鎖導(dǎo)致數(shù)據(jù)不對。
可能導(dǎo)致清理工作做不好。
suspend和resume
暫停和恢復(fù)
會造成獨(dú)占(永遠(yuǎn)的暫停)(方法)
造成不同步
以上就是天津卓眾教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java多線程編程教程:常用方法”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。