线程的优先级等级
MAX_PRIORITY:10
MIN _PRIORITY:1
NORM_PRIORITY:5
涉及的方法
getPriority() :返回线程优先值
setPriority(int newPriority) :改变线程的优先级
例:
我们将分线程的优先级设置为MAX_PRIORITY(10),将主线程的优先级设置为MIN_PRIORITY(1)
代码如下:
class HelloThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0){
System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority() + ":" + i);
}
}
}
public HelloThread(String name){
super(name);
}
}
public class ThreadMethodTest {
public static void main(String[] args) {
HelloThread h1 = new HelloThread("Thread:1");
//h1.setName("线程1");
//设置分线程的优先级
h1.setPriority(Thread.MAX_PRIORITY);
h1.start();
//给主线程命名
Thread.currentThread().setName("主线程");
//设置主线程的优先级
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
for (int i = 0; i < 100; i++) {
if (i % 2 == 0){
System.out.println(Thread.currentThread().getName() + ":" + Thread.currentThread().getPriority()+ ":" + i);
}
}
}
}
运行三次结果如下:
========================================说明===========================================
高优先级的线程要抢占低优先级线程的cpu的执行权,但是只是从概率上讲,高优先级的线程高概率的情况下被执行。并不意味着只有当高优先级的线程执行完以后,低优先级的线程才执行
如果有如下报错的情况:
我们看一下这个工程用的jdk
idea快捷键ctrl+alt+shift+s
如果装的是1.8选的9则会报错。改回来就可以了。
感谢观看!!!