首页 > 编程语言 > 详细

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

时间:2021-09-24 00:36:04      阅读:22      评论:0      收藏:0      [点我收藏+]

线程优先级

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

原文:https://www.cnblogs.com/jie7/p/15306025.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!