java多執行緒:5、Java對多執行緒的支援(二)執行緒優先順序
阿新 • • 發佈:2019-01-11
一、執行緒優先順序
在java當中,每一個執行緒都有一個優先順序,我們可以通過Thread當中的getPriority()方法、setPriority方法去得到一個執行緒的優先順序和設定一個執行緒的優先順序。
設定執行緒優先順序,它的引數是一個整形。最小為1(Thread.MIN_PRIORITY),預設為5(Thread.NORM_PRIORITY),最高為10(Thread.MAX_PRIORITY)
並不一定要線上程start啟動之前進行設定,我們線上程啟動之後也可以設定修改執行緒的優先順序。
t05_執行緒的優先順序
MultiThread類
public class MultiThread { public static void main(String[] args) { MyThread mt = new MyThread(); mt.setPriority(Thread.MAX_PRIORITY);//執行緒啟動之前或之後設定都可以 mt.start(); int index = 0; while(true){ if(index++ == 1000 ) break;//到一千次就終止,跳出迴圈。 注意:if沒有大括號 System.out.println("main:"+Thread.currentThread().getName()); } } }
MyThread類
public class MyThread extends Thread {
@Override
public void run() {
while(true){
System.out.println(getName());
// yield();//暫停當前執行緒,讓其他執行緒執行
}
}
}
在java當中如果某個執行緒優先順序較高,那麼他將始終獲得優先執行的機會。
輸出觀察:
mt執行緒設定優先順序 mt.setPriority(Thread.MAX_PRIORITY); 它始終獲得優先執行的機會。
我們開啟 yield()方法 的註釋,即使執行設定了yield方法,它也始終會獲得優先執行的機會。
一般只有可能在我們強制終止程式的時候,有可能會發現優先順序較低的執行緒執行幾次。