上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;