線程的優(yōu)先級和守護線程
線程的優(yōu)先級
java中線程的優(yōu)先級范圍是1-10睁冬,默認優(yōu)先級是5 焰坪,1最低10最高
高優(yōu)先級線程會盡量優(yōu)先于低優(yōu)先級線程去執(zhí)行蔓腐,只是盡量做到灌砖,更不能保證高優(yōu)先級線程一定在低優(yōu)先級線程執(zhí)行完成前完成,是不能保證的印蔬。
線程優(yōu)先級的特性
具有繼承性:
線程A啟動線程B勋桶,A,B具有相同優(yōu)先級
規(guī)則性:
CPU盡量把處理資源優(yōu)先給高優(yōu)先級的線程先用,但是不一定優(yōu)先級大的線程先執(zhí)行完侥猬。
線程優(yōu)先級的隨機性:
即使設(shè)置了兩個優(yōu)先級差距很大的兩個線程例驹,也無法保證執(zhí)行先后,線程運行具有隨機性退唠。并不能保證執(zhí)行先后順序鹃锈。
兩種線程
1:用戶線程
執(zhí)行用戶級的任務(wù)
2:守護線程
后臺線程,一般執(zhí)行后臺任務(wù)瞧预。
用idDaemon()方法來區(qū)別屎债,如果返回false仅政,則是用戶線程,否則是守護線程
java虛擬機在用戶線程都結(jié)束后盆驹,會退出
GC線程就是個守護線程
守護線程:
守護線程是指在程序運行的時候在后臺提供一種通用服務(wù)的線程圆丹。
守護線程并不屬于程序中不可或缺的一部分,如垃圾回收線程躯喇。
當所有用戶線程結(jié)束后時辫封,程序也就終止了,同時會殺死進程中的所有守護線程廉丽。
用戶線程VS守護線程
如果用戶線程已經(jīng)全部退出運行了倦微,虛擬機也就退出了
如果沒有被守護者了,守護線程也就沒有工作可做了正压,也沒有必要留下來了欣福。
守護線程
并不是jvm虛擬機內(nèi)部特有的
Thread.setDaemon()可以設(shè)置守護線程,但是一定要在線程跑起來之前設(shè)置焦履,否則沒有作用劣欢,反而會拋出IllegalThreadStateException異常
守護線程創(chuàng)建的子線程也是守護線程
總結(jié)
線程有優(yōu)先級之分,優(yōu)先級從1到10裁良,默認優(yōu)先級5
優(yōu)先級高的線程盡量比優(yōu)先級低的線程先運行
線程優(yōu)先級特性:繼承性,規(guī)則性校套,隨機性
Java中線程分兩種价脾,用戶線程和守護線程
守護線程在jvm線程中所有用戶線程結(jié)束后退出
用戶可以手動創(chuàng)建守護線程