您好,登錄后才能下訂單哦!
這篇文章給大家介紹深入淺析Java中多線程優先級,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Java 多線程優先級實例詳解
線程的優先級將該線程的重要性傳遞給調度器。盡管CPU處理現有線程集的順序是不確定的,但是調度器將傾向于讓優先權最高的線程先執行。
你可以用getPriority()來讀取現有線程的優先級,并且在任何時刻都可以通過setPriority()來修改優先級。
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SimplePriorities implements Runnable { private int countDown = 5; /*Java語言規范第三版中對volatile的定義如下: java編程語言允許線程訪問共享變量, 為了確保共享變量能被準確和一致的更新,線程應該確保通過排他鎖單獨獲得這個變量。 Java語言提供了volatile,在某些情況下比鎖更加方便。如果一個字段被聲明成volatile, java線程內存模型確保所有線程看到這個變量的值是一致的。*/ private volatile double d; private int priority; public SimplePriorities(int priority){ this.priority = priority; } public String toString(){ //獲取當前線程信息 return Thread.currentThread() + ":" + countDown; } @Override public void run() { //設置線程優先級 1-10 Thread.currentThread().setPriority(priority); while(true){ for(int i = 0;i<100000;i++){ d += (Math.PI + Math.E) / (double)i; if(i00 == 0){ Thread.yield(); } } System.out.println(this.toString()); if(--countDown == 0)return; } } public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); //優先級為1 exec.execute(new SimplePriorities(Thread.MIN_PRIORITY)); //優先級為10 exec.execute(new SimplePriorities(Thread.MAX_PRIORITY)); exec.shutdown(); } }
toString()方法被覆蓋,以便使用Thread.toString()方法來打印線程的名稱,線程的優先級以及線程所屬的“線程組”。
關于深入淺析Java中多線程優先級就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。