线程优先级
- Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度那个线程来执行。
- 线程的优先级用数字表示,范围从1~10。
- Thread.MIN_PRIORITY = 1;
- Thread.MAX_PRIORITY = 10;
- Thread.NORM_PRIORITY = 5;
- 使用以下方式改变或获取优先级
- getPriority()
- setPriority(int xxx)
- 数字越大优先级越高
public class TestPriority {
public static void main(String[] args) {
// main的线程优先级
System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriority());
MyPriority myPriority = new MyPriority();
Thread t = new Thread(myPriority,"a");
Thread t2 = new Thread(myPriority,"b");
t.start();
t2.setPriority(10);// 设置优先级
t2.start();
}
}
class MyPriority implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriority());
}
}
守护(daemon)线程
- 线程分为用户线程和守护线程
- 虚拟机必须确保用户线程执行完毕
- 虚拟机不用等待守护线程执行完毕
- 守护线程:后台记录操作日志、垃圾回收,内存监控等
public class TestDaemon {
public static void main(String[] args) {
Lucky lucky = new Lucky();
Youlucky you = new Youlucky();
Thread godt = new Thread(lucky);
godt.setDaemon(true);// 默认是false,有true代表是守护进程
godt.start(); // 守护线程
new Thread(you).start();// 用户线程
}
}
class Lucky implements Runnable{
@Override
public void run() {
while(true){
System.out.println("运气一直在");
}
}
}
class Youlucky implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("运气好");
}
System.out.println("================================See You!=======================================");
}
}
【狂神说Java】线程优先级,守护线程