一、线程的优先级
java 提供了一个线程调度器来监控程序种启动后进入就绪状态的所有线程,线程调度器按照线程的优先级决定应该调度哪个线程来执行,优先级高的被优先调度。
优先级用数字来表示,范围从 1 到 10:
- Thread.MIN_ PRIORITY = 1;
- Thread.MAX_ PRIORITY = 10;
- Thread.NORM_PRIORITY = 5.
优先级的设定,建议在 start() 方法的调用之前进行设定。
设定方式就是 new 出线程之后:
t.setPriority(Thread.MAX_PRIORITY);
注意:
优先级高只是意味着获得调度的概率高,并不是会绝对优先调度他,还是那句话,调度是CPU决定的。
二、守护线程
线程分为:用户线程和守护线程。
虚拟机必须保护用户线程执行完毕;而不用等待守护线程执行完毕。
而 默认情况下,我们写出的线程,都是用户线程,也就是说,虚拟机会一直等到执行完毕。
线程类提供了方法,可以设置某一个线程为守护线程:
t.setDaemon(true);//将用户线程调整为守护线程
Daemon单词意思是希腊神话里的一个精灵。
一般守护线程就是类似后台的操作日志、监控内存使用等线程。