线程的优先级
- java中线程优先级范围为1~10,默认是5
- 高优先级线程尽量会优先于低优先级线程执行
线程优先级的特性
- 继承性,如果在线程A中启动线程B,线程A和线程B有相同的优先级
- CPU尽量将执行的资源让给优先级高的线程用,但是不保证执行先后,线程运行具有随机性
package com.hexy.thread.demo;
public class ThreadDemo9 extends Thread {
@Override
public void run(){
super.run();
System.out.println("mythread1 priority="+this.getPriority());
}
static class ThreadDemo9_1{
public static void main(String[] args) {
System.out.println("mainthread priority = "+Thread.currentThread().getPriority());
Thread.currentThread().setPriority(10);
System.out.println("mainthread priority = " + Thread.currentThread().getPriority());
ThreadDemo9 thread = new ThreadDemo9();
thread.start();
}
}
}
守护线程
- 1.用户线程——执行用户级的任务
- 2.守护线程——后台提供通用服务的线程,一般用于执行后台任务
- 3.isDaemon()方法来区分:如果返回false,则说明是用户线程,否则是守护线程
- 4.java虚拟机在用户线程都结束后会退出
- 5.并不属于程序中不可或缺的部分,如垃圾回收线程
- 6.用户线程结束时,程序就终止了,同事会杀死进程中所有的守护线程
用户线程vs守护线程
- 如果用户线程已经全部退出,虚拟机也就退出了
- 没有了被守护者,守护线程就没有必要存在了
守护线程的使用
- 守护线程并非只有虚拟机内部特有
- Thread.setDaemon()方法可以设置守护线程
- 如果想设置线程的守护线程,必须要在线程运行前设置,否则抛出IllegalThreadStateException异常