日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Java21新特性——虛擬線程

來源: 責編: 時間:2023-10-24 09:00:32 358觀看
導讀Java21最重要的新特性之一是虛擬線程(Virtual Threads)。 傳統的Java線程受制于操作系統的線程數,并發能力和可伸縮性有限,許多時候資源無法充分利用。而虛擬線程則提供了一種更高效、更輕量級的線程模型。虛擬線程,也稱為

Java21最重要的新特性之一是虛擬線程(Virtual Threads)。 傳統的Java線程受制于操作系統的線程數,并發能力和可伸縮性有限,許多時候資源無法充分利用。而虛擬線程則提供了一種更高效、更輕量級的線程模型。虛擬線程,也稱為“用戶模式線程(user-mode threads)”或“纖程(fibers)”。該功能旨在簡化并發編程并提供更好的可擴展性。虛擬線程是輕量級的,它們可以比傳統線程創建更多數量,并且開銷要少得多。C4128資訊網——每日最新資訊28at.com

本文主要介紹Java傳統的線程和虛擬線程的特點和區別,以及虛擬線程的編碼方法和注意事項。C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

傳統的線程

在舊的Java版本中使用的線程依賴于操作系統的線程,創建線程、銷毀線程以及線程切換都需要大量性能開銷。而操作系統的線程數有限,當應用系統需要大量線程的時候,可能會導致系統資源耗竭,性能下降,甚至導致系統奔潰。在舊的Java版本中,我們所使用java.lang.Thread來定義線程,這個就是由操作系統所支持的線程。這種線程通常以1:1的比例映射到OS調度的內核。OS線程相當“重”。根據操作系統配置,默認情況下,每個線程消耗2到10 MB, 因此,如果想在發應用程序中使用一百萬個線程,那么就要求有超過2TB的內存可供使用!很明顯,這就限制了線程數量。C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

在基于Java的Web應用中,每個請求使用一個線程有很多優點,比如狀態管理和清理更加容易。但它也造成了可擴展性的限制。容易使CPU或網絡資源耗盡。 C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

虛擬線程

Java21引入虛擬線程,使得Java應用程序的線程不再受制于操作系統,可以在應用中創建多達數十億的線程,更好地適應各種高并發場景,提供更高的并發能力。虛擬線程具有以下優點:C4128資訊網——每日最新資訊28at.com

  • 更高的性能:虛擬線程不再受制于操作系統的線程數,并且減少了線程創建、銷毀、共享等操作的性能開銷。從而獲得更高的并發性能。
  • 更高可伸縮性:虛擬線程可以創建多達數十億的線程,更能適應Java應用的大規模并發場景。
  • 資源消耗更低:虛擬線程比操作系統的線程更加輕量級,資源利用率較高,CPU和內存占用較少。

虛擬線程是一個java.lang.Thread變體,是Project Loom的一部分,不受操作系統的管理或調度,而是由JVM負責調度。當然,任何底層的邏輯都還必須在操作系統線程中運行,只是JVM利用載體線程(carrier threads,也就是平臺線程)之上“攜帶”虛擬線程。C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

編碼示例

虛擬線程的學習成本比較低,只需要像對待非虛擬線程一樣對待他們就可以了。C4128資訊網——每日最新資訊28at.com

(1) 傳統線程的開發傳統線程的用法在使用虛擬線程之前我們先來回顧一下傳統的線程的寫法。C4128資訊網——每日最新資訊28at.com

Runnable fn = () -> {  // 業務代碼};Thread thread = new Thread(fn).start();

Project Loom 簡化了并發方法,它提供了一種新方法來創建平臺的線程:C4128資訊網——每日最新資訊28at.com

Thread thread = Thread.ofPlatform().                      .start(runnable);

或者:C4128資訊網——每日最新資訊28at.com

Thread thread = Thread.ofPlatform().                      .daemon()                      .name("my-custom-thread")

C4128資訊網——每日最新資訊28at.com

(2) 虛擬線程的用法C4128資訊網——每日最新資訊28at.com

API寫法:C4128資訊網——每日最新資訊28at.com

Runnable fn = () -> {// 業務代碼};Thread thread = Thread.ofVirtual(fn)                      .start();

Project Loom 寫法:C4128資訊網——每日最新資訊28at.com

Thread thread = Thread.startVirtualThread(() -> {// 業務代碼});

C4128資訊網——每日最新資訊28at.com

創建虛擬線程的另一種方法是使用Executor:C4128資訊網——每日最新資訊28at.com

var executorService = Executors.newVirtualThreadPerTaskExecutor();executorService.submit(() -> {// 業務代碼});

C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

因為所有的虛擬線程都是守護線程,所以如果想在主線程上等待,就需要調用join()方法,Join方法的作用就是讓主線程等待,當有新的線程加入時,主線程會進入等待狀態,一直到調用方法的副線程執行結束為止。C4128資訊網——每日最新資訊28at.com

thread.join();

C4128資訊網——每日最新資訊28at.com

虛擬線程開發注意事項

  • 注意控制線程數:虛擬線程可以創建大量線程,很容易讓開發人員不在意其數量,而過多的線程仍然會導致性能下降或資源耗盡。因此,仍需根據資源數量合理控制應用程序的并發度。
  • 注意線程安全:使用虛擬線程時要注意線程安全性和正確性,避免共享可變狀態、根據需要使用同步機制。
  • 注意代碼遷移:在從傳統線程遷移到使用虛擬線程的時候,需要注意代碼與新環境、新規范、新需求的一致性。 

總結

虛擬線程是Java并發開發方面的通用、強大的新方法,在Java21版本中已經十分成熟了。對于需要從舊版本JDK遷移到新版本JDK的應用程序來說,改造難度并不大,同時還可以充分利用所有可用硬件資源,提高Java應用程序的并發性和可伸縮性。C4128資訊網——每日最新資訊28at.com

C4128資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-14722-0.htmlJava21新特性——虛擬線程

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 揭秘 Go 中的 new() 和 make() 函數

下一篇: Go中使用sync.Map實現線程安全的緩存

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。“提供相關產品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 質感不錯!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機型都保持著較為均衡的產品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
Top 主站蜘蛛池模板: 醴陵市| 盐池县| 朝阳区| 呼和浩特市| 阳高县| 山丹县| 林口县| 霍州市| 通江县| 新田县| 阿拉善盟| 日喀则市| 宝山区| 云安县| 静宁县| 克拉玛依市| 建瓯市| 永川市| 金坛市| 栖霞市| 昌邑市| 黄陵县| 金堂县| 淳化县| 察隅县| 中牟县| 闸北区| 习水县| 韩城市| 辉县市| 长治县| 永仁县| 乐陵市| 岳阳市| 容城县| 湖口县| 陵川县| 本溪市| 福清市| 绿春县| 阜宁县|