1谤职、設(shè)置線程優(yōu)先級
通過Thread類中的setPriority方法設(shè)置線程優(yōu)先級
setPriority()方法接收一個int類型的參數(shù)晌缘,通過這個參數(shù)可以指定線程的優(yōu)先級,取值范圍是整數(shù)1~10痢站,優(yōu)先級隨著數(shù)字的增大而增強(qiáng)磷箕。
在Thread類中封裝了三個int類型的數(shù)字:
- 優(yōu)先級最低:public final static int MIN_PRIORITY = 1;
- 優(yōu)先級居中:public final static int NORM_PRIORITY = 5;
- 優(yōu)先級最高:public final static int MAX_PRIORITY = 10;
Thread thread1 = new Thread(()->{
for (int i = 0; i < 5; i++) {
System.out.println("我的優(yōu)先級較低");
}
});
Thread thread2 = new Thread(()->{
for (int i = 0; i < 5; i++) {
System.out.println("我的優(yōu)先級較高");
}
});
//thread1.setPriority(1);
thread1.setPriority(Thread.MIN_PRIORITY);
//thread2.setPriority(10);
thread2.setPriority(Thread.MAX_PRIORITY);
thread1.start();
thread2.start();
2、線程優(yōu)先級越高的線程并不一定先執(zhí)行
- Java線程是通過映射到系統(tǒng)的原生線程上來實(shí)現(xiàn)的阵难,所以線程的調(diào)度最終還是取決于操作系統(tǒng)岳枷, 優(yōu)先級反映的是線程占用資源的多少,優(yōu)先級越高呜叫,占用資源越多空繁,性能越好
3、守護(hù)線程
非守護(hù)進(jìn)程一結(jié)束怀偷,守護(hù)進(jìn)程立馬就結(jié)束
Daemon的作用是為其他線程的運(yùn)行提供便利服務(wù)家厌,守護(hù)線程最典型的應(yīng)用就是 GC (垃圾回收器),它就是一個很稱職的守護(hù)者
- thread.setDaemon(true)必須在thread.start()之前設(shè)置椎工,否則會跑出一個IllegalThreadStateException異常饭于。你不能把正在運(yùn)行的常規(guī)線程設(shè)置為守護(hù)線程。
- 在Daemon線程中產(chǎn)生的新線程也是Daemon的维蒙。
- 不要認(rèn)為所有的應(yīng)用都可以分配給Daemon來進(jìn)行服務(wù)掰吕,比如讀寫操作或者計算邏輯。