av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java線(xiàn)程優(yōu)先級(jí)和守護(hù)線(xiàn)程原理解析

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

一、線(xiàn)程優(yōu)先級(jí)的介紹

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

java 中有兩種線(xiàn)程:用戶(hù)線(xiàn)程和守護(hù)線(xiàn)程。可以通過(guò)isDaemon()方法來(lái)區(qū)別它們:如果返回false,則說(shuō)明該線(xiàn)程是“用戶(hù)線(xiàn)程”;否則就是“守護(hù)線(xiàn)程”。用戶(hù)線(xiàn)程一般用于執(zhí)行用戶(hù)級(jí)任務(wù),而守護(hù)線(xiàn)程也就是“后臺(tái)線(xiàn)程”,一般用來(lái)執(zhí)行后臺(tái)任務(wù)。需要注意的是:Java虛擬機(jī)在“用戶(hù)線(xiàn)程”都結(jié)束后會(huì)后退出。

JDK 中關(guān)于線(xiàn)程優(yōu)先級(jí)和守護(hù)線(xiàn)程的介紹如下:

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

當(dāng)Java虛擬機(jī)啟動(dòng)時(shí),通常有一個(gè)單一的非守護(hù)線(xiàn)程(該線(xiàn)程通過(guò)是通過(guò)main()方法啟動(dòng))。JVM會(huì)一直運(yùn)行直到下面的任意一個(gè)條件發(fā)生,JVM就會(huì)終止運(yùn)行:

(01) 調(diào)用了exit()方法,并且exit()有權(quán)限被正常執(zhí)行。

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

每一個(gè)線(xiàn)程都被標(biāo)記為“守護(hù)線(xiàn)程”或“用戶(hù)線(xiàn)程”。當(dāng)只有守護(hù)線(xiàn)程運(yùn)行時(shí),JVM會(huì)自動(dòng)退出。

二、線(xiàn)程優(yōu)先級(jí)的示例

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

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);// 設(shè)置t1的優(yōu)先級(jí)為1 t2.setPriority(10); // 設(shè)置t2的優(yōu)先級(jí)為10 t1.start(); // 啟動(dòng)t1 t2.start(); // 啟動(dòng)t2 } }

運(yùn)行結(jié)果:

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

結(jié)果說(shuō)明:

(01) 主線(xiàn)程main的優(yōu)先級(jí)是5。

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

三、守護(hù)線(xiàn)程的示例

下面是守護(hù)線(xiàn)程的示例。

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); // 設(shè)置t2為守護(hù)線(xiàn)程 t1.start(); // 啟動(dòng)t1 t2.start(); // 啟動(dòng)t2 } }

運(yùn)行結(jié)果:

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

結(jié)果說(shuō)明:

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

(02) t2是守護(hù)線(xiàn)程。在“主線(xiàn)程main”和“子線(xiàn)程t1”(它們都是用戶(hù)線(xiàn)程)執(zhí)行完畢,只剩t2這個(gè)守護(hù)線(xiàn)程的時(shí)候,JVM自動(dòng)退出。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 青青草福利视频 | 91av免费观看 | 成人三级晚上看 | 国产天堂在线 | 成人一区二区三区四区 | 一区二区免费视频 | 一区二区三区免费在线观看 | 久久久久成人网 | 欧美中文字幕在线观看 | 91国产视频在线观看 | 国产中文字幕在线播放 | 中文字幕久久久久 | 日本欧美在线观看 | 性爱一级视频 | www.亚洲| 97人人看| 欧美一级淫片免费视频黄 | 成人免费福利视频 | 精品一区二区在线播放 | 天天天操| 欧美色综合| 亚洲美女网站 | 91蜜桃在线观看 | 日韩欧美一区在线 | 国产精品第二页 | 男女啪啪免费网站 | 日本中文在线观看 | 激情视频一区 | 欧美一级视频 | 亚洲性视频 | 成人午夜视频在线观看 | 国产小视频在线 | 成人欧美在线 | 国产区在线视频 | 久久精品久久久久 | 18在线观看免费入口 | 成人免费黄色大片 | 久久精品在线 | 国产成人精品免费视频 | 中文字幕一区二区三区四区视频 | 五月天婷婷综合 |