国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Java線程優(yōu)先級和守護線程原理解析

瀏覽:72日期:2022-09-03 17:56:27

一、線程優(yōu)先級的介紹

java 中的線程優(yōu)先級的范圍是1~10,默認的優(yōu)先級是5。“高優(yōu)先級線程”會優(yōu)先于“低優(yōu)先級線程”執(zhí)行。

java 中有兩種線程:用戶線程和守護線程。可以通過isDaemon()方法來區(qū)別它們:如果返回false,則說明該線程是“用戶線程”;否則就是“守護線程”。用戶線程一般用于執(zhí)行用戶級任務,而守護線程也就是“后臺線程”,一般用來執(zhí)行后臺任務。需要注意的是:Java虛擬機在“用戶線程”都結束后會后退出。

JDK 中關于線程優(yōu)先級和守護線程的介紹如下:

每個線程都有一個優(yōu)先級。“高優(yōu)先級線程”會優(yōu)先于“低優(yōu)先級線程”執(zhí)行。每個線程都可以被標記為一個守護進程或非守護進程。在一些運行的主線程中創(chuàng)建新的子線程時,子線程的優(yōu)先級被設置為等于“創(chuàng)建它的主線程的優(yōu)先級”,當且僅當“創(chuàng)建它的主線程是守護線程”時“子線程才會是守護線程”。

當Java虛擬機啟動時,通常有一個單一的非守護線程(該線程通過是通過main()方法啟動)。JVM會一直運行直到下面的任意一個條件發(fā)生,JVM就會終止運行:

(01) 調用了exit()方法,并且exit()有權限被正常執(zhí)行。

(02) 所有的“非守護線程”都死了(即JVM中僅僅只有“守護線程”)。

每一個線程都被標記為“守護線程”或“用戶線程”。當只有守護線程運行時,JVM會自動退出。

二、線程優(yōu)先級的示例

我們先看看優(yōu)先級的示例 :

package com.demo.threadPriority;public class MyThread extends Thread{ public MyThread(String name) { super(name); } public void run(){ for (int i=0; i<5; i++) { System.out.println(Thread.currentThread().getName() +'('+Thread.currentThread().getPriority()+ ')' +', loop '+i); } } }

package com.demo.threadPriority;public class Demo { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+'('+Thread.currentThread().getPriority()+ ')'); Thread t1=new MyThread('t1'); // 新建t1 Thread t2=new MyThread('t2'); // 新建t2 t1.setPriority(1);// 設置t1的優(yōu)先級為1 t2.setPriority(10); // 設置t2的優(yōu)先級為10 t1.start(); // 啟動t1 t2.start(); // 啟動t2 } }

運行結果:

main(5)t1(1), loop 0t1(1), loop 1t2(10), loop 0t1(1), loop 2t2(10), loop 1t1(1), loop 3t2(10), loop 2t1(1), loop 4t2(10), loop 3t2(10), loop 4

結果說明:

(01) 主線程main的優(yōu)先級是5。

(02) t1的優(yōu)先級被設為1,而t2的優(yōu)先級被設為10。cpu在執(zhí)行t1和t2的時候,根據(jù)時間片輪循調度,所以能夠并發(fā)執(zhí)行。

三、守護線程的示例

下面是守護線程的示例。

package com.demo.daemonThread;public class MyThread extends Thread{ public MyThread(String name) { super(name); } public void run(){ try { for (int i=0; i<5; i++) {Thread.sleep(3);System.out.println(this.getName() +'(isDaemon='+this.isDaemon()+ ')' +', loop '+i); } } catch (InterruptedException e) { } } }

package com.demo.daemonThread;public class MyDaemon extends Thread{ public MyDaemon(String name) { super(name); } public void run(){ try { for (int i=0; i<10000; i++) {Thread.sleep(1);System.out.println(this.getName() +'(isDaemon='+this.isDaemon()+ ')' +', loop '+i); } } catch (InterruptedException e) { } } }

package com.demo.daemonThread;public class Demo { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+'(isDaemon='+Thread.currentThread().isDaemon()+ ')'); Thread t1=new MyThread('t1'); // 新建t1 Thread t2=new MyDaemon('t2'); // 新建t2 t2.setDaemon(true); // 設置t2為守護線程 t1.start(); // 啟動t1 t2.start(); // 啟動t2 } }

運行結果:

main(isDaemon=false)t2(isDaemon=true), loop 0t2(isDaemon=true), loop 1t1(isDaemon=false), loop 0t2(isDaemon=true), loop 2t1(isDaemon=false), loop 1t2(isDaemon=true), loop 3t2(isDaemon=true), loop 4t1(isDaemon=false), loop 2t2(isDaemon=true), loop 5t2(isDaemon=true), loop 6t1(isDaemon=false), loop 3t2(isDaemon=true), loop 7t2(isDaemon=true), loop 8t2(isDaemon=true), loop 9t1(isDaemon=false), loop 4

結果說明:

(01) 主線程main是用戶線程,它創(chuàng)建的子線程t1也是用戶線程。

(02) t2是守護線程。在“主線程main”和“子線程t1”(它們都是用戶線程)執(zhí)行完畢,只剩t2這個守護線程的時候,JVM自動退出。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關文章:
主站蜘蛛池模板: 精品国产日韩亚洲一区在线 | jizz国产精品免费麻豆 | 91精品国产欧美一区二区 | 欧美精品hdvdeosex4k| 精品国产免费人成高清 | chinese耄耋70老太性 | 亚洲综合在线视频 | 美国毛片aa | 亚洲国产日韩综合久久精品 | 各种偷拍盗摄视频在线观看 | 偷拍第1页 | 日本三级香港三级三级人!妇久 | 超薄肉色丝袜精品足j福利 超级乱淫视频aⅴ播放视频 | 欧美成人免费一区在线播放 | 日韩免费观看一级毛片看看 | 久久亚洲精品无码观看不卡 | 毛片1毛片2毛片3毛片4 | 国产成人一区二区在线不卡 | 99j久久精品久久久久久 | 亚洲热播| 精品成人毛片一区二区视 | 久久久久国产精品免费网站 | 日本一区二区三区四区不卡 | 黄色片免费网址 | 国产成人精品午夜在线播放 | 成人免费视频69 | 91手机看片国产福利精品 | 成年性午夜免费视频网站不卡 | 中国一级毛片在线观看 | 亚洲精品久久久久久久777 | 萝控精品福利视频一区 | 国产精品福利视频萌白酱 | 欧美激情伦妇在线观看 | 日本特爽特黄特刺激大片 | 搞黄网站在线观看 | 久草中文在线观看 | 精品9e精品视频在线观看 | 久久久久久免费观看 | 亚洲欧美精品网站在线观看 | 国产成人免费在线视频 | 香港三级88久久经典 |