Java线程优先级

Posted 巧克力爱王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程优先级相关的知识,希望对你有一定的参考价值。

线程的优先级:

1、Max_PRIORITY :10

2、Min_PRIORITY:1

3、NORM_PRIORITY:5(此为默认优先级)

如何获得和设置当前线程的优先级:

getPriority():获得当前线程的优先级;

setPriority():设置当前线程的优先级。

注意:高优先级的线程要抢占低优先级线程的cpu的执行权,但是只是从概率上讲,高优先级的线程高概率情况下被执行,这并不意味着只有当高优先级的线程执行完后低优先级的线程才执行。

//创建一个类实现Runnable接口
class MyPriority implements Runnable{

    //重写run()方法
    @Override
    public void run() {

        System.out.println(Thread.currentThread().getName() + ":重写run()方法");
    }
}

public class ThreadPriority {

    public static void main(String[] args) {
        MyPriority priority = new MyPriority();

        Thread thread = new Thread(priority);
        Thread thread1 = new Thread(priority);
        Thread thread2 = new Thread(priority);

//      输出线程Thread-0的优先级
        System.out.println(thread.getPriority());

//      修改线程Thread-1的优先级为MAX_PRIORITY并输出
        thread1.setPriority(Thread.MAX_PRIORITY);
        System.out.println(thread1.getPriority());

//      修改线程Thread-2的优先级为MIN_PRIORITY并输出
        thread2.setPriority(Thread.MIN_PRIORITY);
        System.out.println(thread2.getPriority());

        thread.start();
        thread1.start();
        thread2.start();
    }

}

输出结果:每次运行结果都不一定相同,且高优先级并不一定先执行,印证了上面的注意事项

5
10
1
Thread-0:重写run()方法
Thread-1:重写run()方法
Thread-2:重写run()方法

Process finished with exit code 0

 

以上是关于Java线程优先级的主要内容,如果未能解决你的问题,请参考以下文章

java线程入门一

Java 线程转储优先级值与 linux 上的实际线程优先级不对应?

java守护线程

多线程

Java线程调度及相关函数

Java线程调度及相关函数