最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年03月24日 15:06:43   作者:平凡希  
這篇文章主要介紹了Java線程優(yōu)先級和守護線程原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

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

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

JDK 中關(guān)于線程優(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) 調(diào)用了exit()方法,并且exit()有權(quán)限被正常執(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
  } 

}

運行結(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é)果說明:

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

(02) t1的優(yōu)先級被設為1,而t2的優(yōu)先級被設為10。cpu在執(zhí)行t1和t2的時候,根據(jù)時間片輪循調(diào)度,所以能夠并發(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
  } 

}

運行結(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é)果說明:

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java利用Phantomjs實現(xiàn)生成圖片的功能

    Java利用Phantomjs實現(xiàn)生成圖片的功能

    這篇文章主要介紹了Java利用Phantomjs實現(xiàn)生成圖片的功能,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • SpringSecurity中的表單認證詳細解析

    SpringSecurity中的表單認證詳細解析

    這篇文章主要介紹了SpringSecurity中的表單認證詳細解析,在上一篇文章中,我們初步引入了?Spring?Security,并使用其默認生效的?HTTP?基本認證保護?URL?資源,在本篇文章中我們使用表單認證來保護?URL?資源,需要的朋友可以參考下
    2023-12-12
  • Spring Security Oauth2.0認證授權(quán)教程

    Spring Security Oauth2.0認證授權(quán)教程

    Spring Security實現(xiàn)用戶認證、會話管理及授權(quán),支持Token等多方式,OAuth2.0用于分布式系統(tǒng)統(tǒng)一認證,網(wǎng)關(guān)解析令牌并轉(zhuǎn)發(fā)請求
    2025-07-07
  • Java中Map.merge()方法使用示例詳解

    Java中Map.merge()方法使用示例詳解

    這篇文章主要介紹了Map.merge()方法使用和介紹,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • springboot中jsp配置tiles全過程

    springboot中jsp配置tiles全過程

    這篇文章主要介紹了springboot中jsp配置tiles全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java讀取郵件的方法

    Java讀取郵件的方法

    這篇文章主要介紹了Java讀取郵件的方法,以163郵件服務器為例說明了Java讀取郵件的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • SpringBoot+Mybatis實現(xiàn)Mapper接口與Sql綁定幾種姿勢

    SpringBoot+Mybatis實現(xiàn)Mapper接口與Sql綁定幾種姿勢

    通常我們在使用Mybatis進行開發(fā)時,會選擇xml文件來寫對應的sql,然后將Mapper接口與sql的xml文件建立綁定關(guān)系,然后在項目中調(diào)用mapper接口就可以執(zhí)行對應的sql,感興趣的可以學習一下
    2021-09-09
  • IDEA導入下載的項目后左側(cè)沒有樹狀層級目錄的解決方案

    IDEA導入下載的項目后左側(cè)沒有樹狀層級目錄的解決方案

    這篇文章主要介紹了IDEA導入下載的項目后左側(cè)沒有樹狀層級目錄的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-08-08
  • Java 添加數(shù)字簽名到excel及檢測,刪除簽名

    Java 添加數(shù)字簽名到excel及檢測,刪除簽名

    這篇文章主要介紹了Java 添加數(shù)字簽名到excel及檢測,刪除簽名的方法,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-04-04
  • 關(guān)于maven項目中使用BCrypt加密方式

    關(guān)于maven項目中使用BCrypt加密方式

    BCrypt是一種基于Blowfish加密算法的密碼散列函數(shù),用于安全存儲和驗證用戶密碼,它通過引入鹽和工作因子增加計算復雜度,有效防止彩虹表攻擊和破解,BCrypt具備適應性工作因子、成本參數(shù)調(diào)整、迭代哈希和密鑰擴展等特點,被廣泛應用于Web應用程序的安全性設計中
    2024-10-10

最新評論

凤冈县| 淮滨县| 武汉市| 禄劝| 十堰市| 兰考县| 信宜市| 武城县| 绍兴县| 肃南| 开平市| 渝北区| 云霄县| 邢台市| 普定县| 托克托县| 镇赉县| 南投县| 澄江县| 定南县| 蛟河市| 达日县| 通榆县| 西乌珠穆沁旗| 阜康市| 万山特区| 平昌县| 伊春市| 田阳县| 资溪县| 九龙坡区| 高碑店市| 金溪县| 汝阳县| 房产| 和顺县| 庆元县| 政和县| 即墨市| 黑河市| 肥东县|