摘要:一線程優(yōu)先級線程優(yōu)先級的范圍是,默認優(yōu)先級是,線程優(yōu)先級的主要作用是讓調(diào)度器優(yōu)先調(diào)度高優(yōu)先級線程,但這不意味著低優(yōu)先級線程得不到執(zhí)行,通常情況不需要修改線程優(yōu)先級,類中有個優(yōu)先級的常量二源碼分析線程所屬的線程組設(shè)置的級別不能大于且不能小于設(shè)
一、線程優(yōu)先級
線程優(yōu)先級的范圍是1~10,默認優(yōu)先級是5,線程優(yōu)先級的主要作用是讓調(diào)度器優(yōu)先調(diào)度高優(yōu)先級線程,但這不意味著低優(yōu)先級線程得不到執(zhí)行,通常情況不需要修改線程優(yōu)先級,Thread類中有3個優(yōu)先級的常量:
二、源碼分析
public final void setPriority(int newPriority) { ThreadGroup g;//線程所屬的線程組 checkAccess(); //設(shè)置的級別不能大于10且不能小于1 if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) { throw new IllegalArgumentException(); } if((g = getThreadGroup()) != null) { //設(shè)置的級別不能大于所屬線程組的最大級別 if (newPriority > g.getMaxPriority()) { newPriority = g.getMaxPriority(); } setPriority0(priority = newPriority);//本地方法 } }
三、線程優(yōu)先級示例
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(); } } }
輸出結(jié)果(截取部分):
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、結(jié)果說明
新開啟2個線程,線程1優(yōu)先級為1,線程2優(yōu)先級為10,兩個線程交替執(zhí)行,高優(yōu)先級線程(t2)并不是一直優(yōu)先于t1執(zhí)行
四、總結(jié)
高優(yōu)先級線程并不是一直優(yōu)于低優(yōu)先級線程執(zhí)行
歡迎加入學習交流群569772982,大家一起學習交流。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67861.html
摘要:多線程和并發(fā)問題是技術(shù)面試中面試官比較喜歡問的問題之一。線程可以被稱為輕量級進程。一個守護線程是在后臺執(zhí)行并且不會阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務(wù)操作系統(tǒng)和多線程環(huán)境的基本特征。 多線程和并發(fā)問題是 Java 技術(shù)面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,但是你仍然應(yīng)該牢固的掌握Java多線程基礎(chǔ)知識來對應(yīng)日后碰到的問題。(...
摘要:線程可以被稱為輕量級進程。一個守護線程是在后臺執(zhí)行并且不會阻止終止的線程。其他的線程狀態(tài)還有,和。上下文切換是多任務(wù)操作系統(tǒng)和多線程環(huán)境的基本特征。在的線程中并沒有可供任何對象使用的鎖和同步器。 原文:Java Multi-Threading and Concurrency Interview Questions with Answers 翻譯:并發(fā)編程網(wǎng) - 鄭旭東 校對:方騰飛 多...
線程池ExecutorService 一. new Thread的弊端 執(zhí)行一個異步任務(wù)你還只是如下new Thread嗎? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就太out了,...
摘要:系統(tǒng)級線程核心級線程由操作系統(tǒng)內(nèi)核進行管理。值得注意的是多線程的存在,不是提高程序的執(zhí)行速度。實現(xiàn)多線程上面說了一大堆基礎(chǔ),理解完的話。虛擬機的啟動是單線程的還是多線程的是多線程的。 前言 之前花了一個星期回顧了Java集合: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、散列表、紅黑樹介紹 HashMap就是這么簡單【源碼剖析】 LinkedHashMa...
閱讀 2638·2021-11-25 09:43
閱讀 2739·2021-11-04 16:09
閱讀 1656·2021-10-12 10:13
閱讀 890·2021-09-29 09:35
閱讀 891·2021-08-03 14:03
閱讀 1784·2019-08-30 15:55
閱讀 3000·2019-08-28 18:14
閱讀 3502·2019-08-26 13:43