java学习(线程优先级,守护线程)

线程优先级

Java提供一个线程调度器来监控程序中所有线程的调度,它会优先调度优先级高的线程,不过具体调度哪个,看CPU心情。

线程的优先级(priority)分为10个等级,10最大,1最小。

对于1,5,10 有专门的称呼,

Thread.MIN_PRIORITY=1

Thread.NORM_PRIORITY=5

Thread.MAX_PRIORITY=10

可以使用getPriority()方法来获取线程优先级

可以使用setPriority(int xxx)方法来改变线程的优先级

public class TestPriority {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName()+"优先级是:"+Thread.currentThread().getPriority());
        MyPriority m1 = new MyPriority();
        Thread t1 = new Thread(m1);
        Thread t2 = new Thread(m1);
        Thread t3 = new Thread(m1);
        Thread t4 = new Thread(m1);
        Thread t5 = new Thread(m1);
        t1.setPriority(2);
        t1.start();
        t2.setPriority(4);
        t2.start();
        t3.setPriority(6);
        t3.start();
        t4.setPriority(8);
        t4.start();
        t5.setPriority(10);
        t5.start();



    }
}
class MyPriority implements  Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"优先级是:"+Thread.currentThread().getPriority());
    }
}

这里就是创建了许多线程来分别测试他们的优先级,经过多次实验之后发现优先级高的线程被调用的次数会比较多,一般线程默认优先级为5,也就是Thread.NORM_PRIORITY

这便是优先级的作用。

守护线程(Daemon)

线程分为用户线程和守护线程,其中用户线程(main)就是我们创造出来的线程,而守护线程就是在背后运行的线程,例如后台记录的操作日志,监控内存,垃圾清理(GC)。

注意:Java必须在JVM上面运行,而居民作为虚拟机,必须要等待用户线程运行完毕,而不需要等待守护线程运行完毕,所以守护线程一直都在运行。

可以使用thread.setDaemon(boolean)方法来设置守护线程,

下面通过一个例子来解释:

public class TestDaemon {
    public static void main(String[] args) {
        God god = new God();
        I i = new I();
        Thread thread = new Thread(god);
        thread.setDaemon(true);
        thread.start();

        new Thread(i).start();

    }
}
class God implements Runnable{
    @Override
    public void run() {
        System.out.println("上帝保护你!");
    }
}
class I implements Runnable{
    @Override
    public void run() {
        for (int i = 1; i <= 100; i++) {
            System.out.println("这是我活着的第"+i+"年");
        }
    }
}

这里模拟上帝守护你的例子,其中上帝作为守护线程,一直守护着 I 这个线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值