Java线程的优先级
java 中的線程優先級的范圍是1~10,默認的優先級是5?!案邇炏燃壘€程”會優先于“低優先級線程”執行。
Java線程的優先級不是很靠譜,因為:
1):不同平臺的優先級實現不同
Java的線程優先級是映射到系統的線程優先級上的。線程調度方式取決于操作系統(os)的實現,很多os的提供的線程優先級和Java的線程優先級不是一一對應的。
例如:
Solaris中有 2^32 種優先級,而windows只有7種 。
2):優先級也會被系統改變
例如:Windows中有一個“優先級推進器”功能,當系統發現一個線程執行的特別勤奮的話,會越過線程優先級去給它分配系統執行時間。從而可以減少上下文切換的開銷,提高系統的運行效率。
用戶線程和守護線程
JDK 中關于線程優先級和守護線程的介紹如下:
每個線程都有一個優先級?!案邇炏燃壘€程”會優先于“低優先級線程”執行。每個線程都可以被標記為一個守護進程或非守護進程。在一些運行的主線程中創建新的子線程時,子線程的優先級被設置為等于“創建它的主線程的優先級”,當且僅當**“創建它的主線程是守護線程”時“子線程才會是守護線程”**。
可以通過isDaemon()方法來區別它們:如果返回false,則說明該線程是“用戶線程”;否則就是“守護線程”。用戶線程一般用于執行用戶級任務,而守護線程也就是“后臺線程”,一般用來執行后臺任務。
需要注意的是:Java虛擬機在“用戶線程”都結束后會后退出。
可以通過設置標志位來分別創建用戶線程和守護線程
//此方法只能在thread.start()方法調用之前執行,否則會拋出IllegalThreadStateException thread.setDaemon(false);當Java虛擬機啟動時,通常有一個單一的非守護線程(該線程通過是通過main()方法啟動)。JVM會一直運行直到下面的任意一個條件發生,JVM就會終止運行:
總結
以上是生活随笔為你收集整理的Java线程的优先级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【前端html页面练习】还原英雄联盟客户
- 下一篇: matlab中线形_MATLAB在绘图时