????????Thread是Java線程的基礎(chǔ)類璃谨,也是最常用到的類,里面方法比較多,可以和Thread線程狀態(tài)一起拿來(lái)說(shuō)下佳吞。
Thread基本上分5大狀態(tài)拱雏,新建,就緒底扳,執(zhí)行铸抑,阻塞,死亡衷模;
新建狀態(tài):這個(gè)容易理解鹊汛,直接new 一個(gè)Thread就是新建;
就緒狀態(tài):就是在執(zhí)行start之后阱冶,當(dāng)前線程就處于就緒狀態(tài)刁憋,至于要執(zhí)行不執(zhí)行就是程序不能控制的了,是由當(dāng)前服務(wù)器本地線程管理決定的木蹬;這里要注意啟動(dòng)線程不要用run至耻,run還是在主線程里面執(zhí)行;
執(zhí)行狀態(tài):當(dāng)線程獲得CPU時(shí)間届囚,線程才從就緒狀態(tài)進(jìn)入到運(yùn)行狀態(tài);
阻塞:線程進(jìn)入運(yùn)行狀態(tài)后有梆,可能由于多種原因讓線程進(jìn)入阻塞狀態(tài),如:調(diào)用sleep()方法讓線程睡眠意系,調(diào)用wait()方法讓線程等待泥耀,調(diào)用join()方法、suspend()方法(它現(xiàn)已被棄用;滋怼)以及阻塞式IO方法痰催。sleep和wait最大的區(qū)別是:sleep()不釋放同步鎖,wait()釋放同步鎖;
死亡:run()方法的正常退出就讓線程進(jìn)入到死亡狀態(tài),還有當(dāng)一個(gè)異常未被捕獲而終止了run()方法的執(zhí)行也將進(jìn)入到死亡狀態(tài)迎瞧!
除了上面提到的方法夸溶,還有以下一些方法:
join():可以讓線程按順序執(zhí)行;
yield(): 線程禮讓方法凶硅,讓該線程進(jìn)入就緒狀態(tài)缝裁,CPU重新分配;
interrupt():給當(dāng)前線程設(shè)置一個(gè)標(biāo)記位,告訴線程要結(jié)束了足绅,具體什么時(shí)間結(jié)束還是靠線程自己決定捷绑,最好的方式是run方法執(zhí)行完成;
stop():直接終止該線程氢妈,這個(gè)方法已經(jīng)放棄粹污,因?yàn)椴话踩?/p>
setName():設(shè)置線程名稱;
setPriority():設(shè)置優(yōu)先級(jí)首量;
主要是以上這些方法壮吩。