Java线程优先级是指在多个线程之间,操作系统决定哪个线程先执行的一个重要因素。Java中的优先级从1到10,其中1是最低优先级,10是最高优先级。
当多个同时可运行的任务都在就绪队列中时,操作系统将根据它们的优先权来决定哪个任务应该被执行。如果有多个任务同时处于就绪态,那么操作系统将根据它们的优先权来决定哪个任务应该被执行。如果有多个任务同时处于就绪态,那么操作系统将根据它们的优先权来决定首先被执行哪一个。
// 设定当前运行的Thread对象的优先权 Thread.currentThread().setPriority(int newPriority); // 获取当前运行的Thread对象的优先权 int priority = Thread.currentThread().getPriority();
所有线程都有优先级。
优先级由1到10之间的整数表示。
优先级为1的线程优先级最低。优先级为10的线程具有最高优先级。
在Thread类中定义了三个常量来表示下表中列出的三个不同的线程优先级。
线程优先级常量 | 整数值 |
---|---|
MIN_PRIORITY | 1 |
NORM_PRIORITY | 5 |
MAX_PRIORITY | 10 |
具有较高优先级的线程应该有更多的CPU时间。
线程的优先级只是调度器的一个提示。
Thread类的setPriority()方法为线程设置了新的优先级。
getPriority()方法返回线程的当前优先级。
创建线程时,其优先级设置为创建线程的优先级。
以下代码演示如何设置和获取线程的优先级。
public class Main { public static void main(String[] args) { Thread t = Thread.currentThread(); System.out.println("main Thread Priority:" + t.getPriority()); Thread t1 = new Thread(); System.out.println("Thread(t1) Priority:" + t1.getPriority()); t.setPriority(Thread.MAX_PRIORITY); System.out.println("main Thread Priority:" + t.getPriority()); Thread t2 = new Thread(); System.out.println("Thread(t2) Priority:" + t2.getPriority()); // Change thread t2 priority to minimum t2.setPriority(Thread.MIN_PRIORITY); System.out.println("Thread(t2) Priority:" + t2.getPriority()); } }
上面的代码生成以下结果。
JavaFX教程 -JavaFX滑块滑块可以显示和与一系列数值进行交互。滑块控件有两件事:一个轨道和一个可拖动的拇指。在轨道上,我们可...
Java日期时间 -Java特定区域格式我们可以从不同的语言环境创建DateTimeFormatter。DateTimeFormatter ofLocalizedDate(FormatSty...
Java流 -Java流过滤器过滤操作产生过滤流,即输入流的子集,其元素对于指定的谓词计算为true。predicate是一个接受元素并返回布...