Java 线程优先级设置

每个线程都有一个优先级,优先级是由1到10之间的数字表示。理论上来说,CPU根据线程的优先级来调度线程,但实际上可以忽略优先级,因为时间片轮转法才是最重要的调度算法。学习本节的内容,主要是扩展知识面,明确优先级仅仅是象征意义,并没有真正的实用价值。

线程优先级设置

public final int getPriority();

public final void setPriority(int newPriority); 

备注:如果newPriority值超出范围,即1(最小值)到10(最大值),该方法将抛出IllegalArgumentException。

线程优先级常量

为了方便设置,Java设计出三个优先级常量,如下所示:

public static int MIN_PRIORITY;
public static int NORM_PRIORITY;
public static int MAX_PRIORITY;

线程的默认优先级为5(NORM_PRIORITY)。MIN_PRIORITY的值为1,MAX_PRIORITY的值为10。

深度思考

至于为什么只搞三个优先级常量,而不是十个?为什么NORM_PRIORITY为5而不是其他的数字?如此这样疑问,大可不必去深究,正如前文所述,优先级更多的象征意义,并不会起到多少实际作用。