摘要:一線程優先級線程優先級的范圍是,默認優先級是,線程優先級的主要作用是讓調度器優先調度高優先級線程,但這不意味著低優先級線程得不到執行,通常情況不需要修改線程優先級,類中有個優先級的常量二源碼分析線程所屬的線程組設置的級別不能大于且不能小于設
一、線程優先級
線程優先級的范圍是1~10,默認優先級是5,線程優先級的主要作用是讓調度器優先調度高優先級線程,但這不意味著低優先級線程得不到執行,通常情況不需要修改線程優先級,Thread類中有3個優先級的常量:
二、源碼分析
public final void setPriority(int newPriority) { ThreadGroup g;//線程所屬的線程組 checkAccess(); //設置的級別不能大于10且不能小于1 if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) { throw new IllegalArgumentException(); } if((g = getThreadGroup()) != null) { //設置的級別不能大于所屬線程組的最大級別 if (newPriority > g.getMaxPriority()) { newPriority = g.getMaxPriority(); } setPriority0(priority = newPriority);//本地方法 } }
三、線程優先級示例
public class ThreadPrioritiesDemo extends Thread { private int priority; public ThreadPrioritiesDemo(String name, int priority) { super(name); this.priority = priority; } public static void main(String[] args) { Thread t1 = new ThreadPrioritiesDemo("thread1", 1); Thread t2 = new ThreadPrioritiesDemo("thread2", 10); t1.start(); t2.start(); } @Override public void run() { Thread.currentThread().setPriority(priority); for (int i = 0; i < 1000; i++) { System.out.println(this + ":" + i); if (i % 2 == 0) Thread.yield(); } } }
輸出結果(截取部分):
Thread[thread1,1,main]:670 Thread[thread2,10,main]:293 Thread[thread2,10,main]:294 Thread[thread1,1,main]:671 Thread[thread1,1,main]:672 Thread[thread2,10,main]:295 Thread[thread2,10,main]:296 Thread[thread1,1,main]:673 Thread[thread1,1,main]:674 Thread[thread2,10,main]:297 Thread[thread2,10,main]:298 Thread[thread1,1,main]:675 Thread[thread1,1,main]:676 Thread[thread2,10,main]:299
3.1、結果說明
新開啟2個線程,線程1優先級為1,線程2優先級為10,兩個線程交替執行,高優先級線程(t2)并不是一直優先于t1執行
四、總結
高優先級線程并不是一直優于低優先級線程執行
歡迎加入學習交流群569772982,大家一起學習交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67861.html
摘要:多線程和并發問題是技術面試中面試官比較喜歡問的問題之一。線程可以被稱為輕量級進程。一個守護線程是在后臺執行并且不會阻止終止的線程。其他的線程狀態還有,和。上下文切換是多任務操作系統和多線程環境的基本特征。 多線程和并發問題是 Java 技術面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,但是你仍然應該牢固的掌握Java多線程基礎知識來對應日后碰到的問題。(...
摘要:線程可以被稱為輕量級進程。一個守護線程是在后臺執行并且不會阻止終止的線程。其他的線程狀態還有,和。上下文切換是多任務操作系統和多線程環境的基本特征。在的線程中并沒有可供任何對象使用的鎖和同步器。 原文:Java Multi-Threading and Concurrency Interview Questions with Answers 翻譯:并發編程網 - 鄭旭東 校對:方騰飛 多...
線程池ExecutorService 一. new Thread的弊端 執行一個異步任務你還只是如下new Thread嗎? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就太out了,...
摘要:系統級線程核心級線程由操作系統內核進行管理。值得注意的是多線程的存在,不是提高程序的執行速度。實現多線程上面說了一大堆基礎,理解完的話。虛擬機的啟動是單線程的還是多線程的是多線程的。 前言 之前花了一個星期回顧了Java集合: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、散列表、紅黑樹介紹 HashMap就是這么簡單【源碼剖析】 LinkedHashMa...
閱讀 2621·2021-11-25 09:43
閱讀 2725·2021-11-04 16:09
閱讀 1636·2021-10-12 10:13
閱讀 881·2021-09-29 09:35
閱讀 880·2021-08-03 14:03
閱讀 1777·2019-08-30 15:55
閱讀 2989·2019-08-28 18:14
閱讀 3489·2019-08-26 13:43