一 概述
为了有助于操作系统对线程的调度次序,每个线程都有一个优先级。
二 线程优先级详情
public class Thread implements Runnable {
/**
* The minimum priority that a thread can have.
*/
public final static int MIN_PRIORITY = 1;
/**
* The default priority that is assigned to a thread.
*/
public final static int NORM_PRIORITY = 5;
/**
* The maximum priority that a thread can have.
*/
public final static int MAX_PRIORITY = 10;
}
Java中线程的优先级是一个整数,根据JDK1.8源码可知,线程的优先级取值范围1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。默认情况下,每一个线程都会分配一个优先级NORM_PRIORITY(5)。
注意:具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序,而且非常依赖于平台。
三 多线程使用
有效利用多线程的关键是理解程序是否是并行执行,当程序中有两个子系统需要并行执行时,我们应该考虑利用多线程编程。虽然借助多线程技术可以编写出非常高效的程序,但是创建的线程太多的时候,程序的执行效率反而会降低,因为上下文的切换开销非常重要,如果你创建了太多的线程,CPU花费在上下文的切换的时间将多于执行程序的时间。