多线程(三)线程控制之线程优先级
2017-12-28 10:50
225 查看
多线程(三)线程控制之线程优先级
原创 2016年08月14日13:20:36
1272
每个线程执行时都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。
每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。
Thread类提供了setPriority(int newPriority)、getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法的参数可以是一个整数,范围是1~10之间,也可以使用Thread类的如下三个静态常量。
A、MAX_PRIORITY:其值是10。
B、MIN_PRIORITY:其值是1。
C、NORM_PRIORITY:其值是5。
[java] view
plain copy
package gblw.fisrt;
public class PriorityTest extends Thread{
//定义一个有参构造器函数,用于创建线程时指定name
public PriorityTest(String name){
super(name);
}
public void run(){
for(int i=0;i<50;i++){
System.out.println(getName()+",其优先级是:"+getPriority()+",循环变量的值为:"+i);
}
}
public static void main(String[] args) {
//改变主线程的优先级
Thread.currentThread().setPriority(6);
for(int i=0;i<30;i++){
if(i==10){
PriorityTest low=new PriorityTest("低级");
low.start();
System.out.println("创建之初的优先级:"+low.getPriority());
//设置该线程为最低优先级
low.setPriority(Thread.MIN_PRIORITY);
}
if(i==20){
PriorityTest high=new PriorityTest("高级");
high.start();
System.out.println("创建之初的优先级:"+high.getPriority());
//设置该线程为最低优先级
high.setPriority(Thread.MAX_PRIORITY);
}
}
}
}
注意:虽然Java提供了10个优先级级别,但这些优先级别需要操作系统支持。遗憾的是,不同操作系统上的优先级并不相同,而且也不能很好的和Java的10个优先级对应,例如Windows2000仅提供了7个优先级。因此应该尽量避免直接为线程指定优先级,而应该使用MAX_PRIORITY、MIN_PRIORITY和NORM_PRIORITY三个静态常量来设置优先级,这样
才可以保证程序具有最好的可移植性。
相关文章推荐
- 多线程入门-第三章-线程的调度与控制之优先级
- java多线程(16)--线程控制之线程优先级
- [疯狂Java]多线程:线程控制(join、daemon、sleep、yield、优先级)
- posix多线程有感--线程高级编程(线程调度以及优先级设置)
- Qt中多线程系列之线程控制
- 多线程-线程控制
- iOS 开发 多线程详解之NSThread线程通信的操作与控制
- Java多线程之线程控制(2)
- 第10章 线程控制(5)_多线程下的fork
- 2.多线程系列文章 之 线程的控制
- Java多线程之线程的控制
- iOS多线程学习---控制线程通信及线程使用的总结
- Java多线程、线程的生命周期和状态控制
- 编程思想之多线程与多进程(2)-线程优先级与线程安全
- VB.NET中多线程程序开发之线程控制
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
- iOS 开发 多线程详解之线程生命周期控制
- 23 API-多线程(多线程概述,多线程实现方案,线程控制常见方法,线程安全问题及解决)
- 编程思想之多线程与多进程(2)——线程优先级与线程安全
- Java多线程之线程控制(2)