Java线程调度特点
-
提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程
-
线程调度器按照线程的优先级决定应调度哪个线程来执行
-
线程的优先级范围:
-
Thread.MIN PRIORITY = 1
-
Thread.MAX PRIORITY = 10
-
Thread NORM PRIORITY = 5
-
获得或设置线程对象的优先级
int getPriority();
void setPriority(int newPriority);
特点:
-
优先级设定建议再start调用之前
-
优先级低只是获得调度的概率低,不是绝对先调用优先级高的线程后调用优先级低的线程
线程状态特点:
package iostudy.priority;
/**
* 测试线程的优先级1-10
* 1、Normal priority--->默认是5,所有线程默认的值都是5
* 2、Min priority--->1
* 3、Max priority--->10
*/
public class PriorityTest {
public static void main(String[] args) {
/*获取线程等级*/
System.out.println(Thread.currentThread().getPriority());
/*创建线程实现类对象*/
MyPriority myPriority = new MyPriority();
/*创建代理类对象*/
Thread t1 = new Thread(myPriority);
/*创建多个线程*/
Thread t2 = new Thread(myPriority, "秃笔南玻万");
Thread t3 = new Thread(myPriority, "秃笔南博兔");
Thread t4 = new Thread(myPriority, "秃笔南玻思锐");
Thread t5 = new Thread(myPriority, "秃笔南玻佛");
Thread t6 = new Thread(myPriority, "秃笔南玻fai务");
/*设置线程优先级,并且设置再启动之前*/
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.MAX_PRIORITY);
t3.setPriority(Thread.MIN_PRIORITY);
t4.setPriority(Thread.MIN_PRIORITY);
t5.setPriority(Thread.MAX_PRIORITY);
t6.setPriority(Thread.MAX_PRIORITY);
/*启动线程--->调用start方法*/
t1.start();
/*多线程启动*/
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
/*
待会创建多个线程
并且需要设置线程优先级
优先级不代表绝对的线程执行先后顺序
优先级高只代表执行的时间片可能多一些、早一些
*/
}
}
/**
* 创建线程类
* @since JDK 1.8
* @date 2021/6/7
* @author Lucifer
*/
class MyPriority implements Runnable{
/*重写run方法*/