線程的優先級
線程的優先級說明在程序中該線程的重要性。系統會根據優先級決定首先使用哪個線程,但這並不意味着優先級低的線程得不到運行,只是它運行的幾率比較小而已,比如垃圾回收機制。
方法: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(); } }
運行結果:

但是吧,你的運行結果不一定和我的一樣,因為這個吧每個人的電腦不一樣,而且每次運行的狀態也不一樣。會用就好啦~~
