线程的优先级
线程的优先级
线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已,比如垃圾回收机制。
方法:setPriority("",5,threadA);
每个新的线程都继承了父线程的优先级。Thread.MIN_PRIORITY(1)---Thread.MAN_PRIORITY(10)------Thread.NORM_PRIOITY(5)优先级在1---10之间。
在多任务的操作系统中,每个线程都会得到一小段CPU时间片运行,在时间结束时,将轮换另一个线程进入运行状态,这时系统会选择与当前线程优先级相同的线程予以运行。
系统始终选择优先级较高的线程进入运行状态。
代码:
setPriority.java
package com;
public class setPriority extends Thread {
public setPriority(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void run() {
System.out.println(getName());
}
}
}
App.java
package com;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class App {
public App() throws InterruptedException, ExecutionException {
setPriority a = new setPriority("11111");
setPriority b = new setPriority("22222");
setPriority c = new setPriority("33333");
setPriority d = new setPriority("44444");
setPriority e = new setPriority("55555");
a.setPriority(7); //设置优先级
b.setPriority(1);
c.setPriority(7);
d.setPriority(4);
e.setPriority(5);
a.start();
b.start();
c.start();
d.start();
e.start();
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
new App();
}
}
运行结果:
但是吧,你的运行结果不一定和我的一样,因为这个吧每个人的电脑不一样,而且每次运行的状态也不一样。会用就好啦~~
我想要变得高一点,最好能伸手给你一片天。