线程的优先级
线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已,比如垃圾回收机制。
方法: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(); } }
运行结果:
但是吧,你的运行结果不一定和我的一样,因为这个吧每个人的电脑不一样,而且每次运行的状态也不一样。会用就好啦~~