真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java線程優(yōu)先級(jí)和守護(hù)線程原理的示例分析

小編給大家分享一下Java線程優(yōu)先級(jí)和守護(hù)線程原理的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司企業(yè)建站,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁(yè)設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營(yíng)經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁(yè)中充分展現(xiàn),通過(guò)對(duì)客戶行業(yè)精準(zhǔn)市場(chǎng)調(diào)研,為客戶提供的解決方案。

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

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

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

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

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

當(dāng)Java虛擬機(jī)啟動(dòng)時(shí),通常有一個(gè)單一的非守護(hù)線程(該線程通過(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ù)線程”都死了(即JVM中僅僅只有“守護(hù)線程”)。

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

二、線程優(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 0
t1(1), loop 1
t2(10), loop 0
t1(1), loop 2
t2(10), loop 1
t1(1), loop 3
t2(10), loop 2
t1(1), loop 4
t2(10), loop 3
t2(10), loop 4

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

(01) 主線程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ù)線程的示例

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

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ù)線程
    t1.start();           // 啟動(dòng)t1
    t2.start();           // 啟動(dòng)t2
  } 

}

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

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

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

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

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

Java的特點(diǎn)有哪些

Java的特點(diǎn)有哪些 1.Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、安全性、平臺(tái)獨(dú)立與可移植性、動(dòng)態(tài)性等特點(diǎn)。 3.使用Java可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

以上是“Java線程優(yōu)先級(jí)和守護(hù)線程原理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標(biāo)題名稱:Java線程優(yōu)先級(jí)和守護(hù)線程原理的示例分析
文章轉(zhuǎn)載:http://weahome.cn/article/jgjhod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部