【狂神说Java】线程优先级,守护线程

线程优先级

  • 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】线程优先级,守护线程

上一篇:jQuery中添加节点元素 append


下一篇:云服务器ECS,你真的懂吗?