Java多线程编程核心技术(第3版)
上QQ阅读APP看书,第一时间看更新

1.14 线程的优先级

在操作系统中,线程可以划分优先级,优先级较高的线程得到的CPU资源较多,即CPU优先执行优先级较高的线程对象中的任务,其实就是让高优先级的线程获得更多的CPU时间片。

设置线程优先级有助于“线程规划器”确定在下一次选择哪一个线程来优先执行。

使用setPriority()方法设置线程的优先级,此方法在JDK中的源代码如下:


public final void setPriority(int newPriority) {
    ThreadGroup g;
    checkAccess();
    if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
        throw new IllegalArgumentException();
    }
    if ((g = getThreadGroup()) != null) {
        if (newPriority > g.getMaxPriority()) {
            newPriority = g.getMaxPriority();
        }
        setPriority0(priority = newPriority);
    }
}

在Java中线程的优先级分为10个等级,即1~10,如果小于1或大于10,则JDK抛出异常throw new IllegalArgumentException()。

JDK使用三个常量来预定义优先级的值,代码如下:


public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;