本文主要是介绍Java基础知识总结(75),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
* 3、线程优先级
每个线程执行时都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。
Thread类提供了setPriority(int newPriority)、getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法的参数可以是一个整数,范围是1~10之间,也可以使用Thread类的如下3个静态常量。
MAX_PRIORITY:其值是10。
MIN_PRIORITY:其值是1。
NORM_PRIORITY:其值是5。
/**
* 优先级练习
*/
public class PriorityDemo {
public static void main(String[] args) throws InterruptedException {
//定义存放线程的数组
MyThread[] myThreads = new MyThread[10];
int length = myThreads.length;
//优先级为1<-->10 循环需要从1开始
for (int i = 1; i <=length; i++) {
//创建线程
myThreads[i-1] = new MyThread();
//分别创建线程优先级
myThreads[i-1].setPriority(i);
//启动线程
myThreads[i-1].start();
}
//休眠主线程 让创建的线程得以执行
TimeUnit.SECONDS.sleep(3);
for (int i = 0; i < length; i++) {
//停止线程
myThreads[i].stop();
}
}
}
优先级的继承
/**
* 优先级练习2
*/
public class PriorityDemo2 {
public static void main(String[] args) {
Thread thread = new Thread(()->{
System.out.println("线程thread执行");
},"thread");
Thread main = Thread.currentThread();
System.out.println(main.getState());
System.out.println(main.getName()+"线程的优先级:"+main.getPriority());
//在main线程中创建thread线程,thread线程的优先级与main线程一致
thread.start();
System.out.println(thread.getName()+"线程的优先级:"+thread.getPriority());
}
}
这篇关于Java基础知识总结(75)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!