精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java 21 的虛擬線程:高性能并發(fā)應(yīng)用的福音

開發(fā) 前端
盡管Scoped Values (JEP 446) 和Structured Concurrency (JEP 453) 仍然是Java 21中的預(yù)覽功能,但Virtual Threads已經(jīng)成為一個(gè)成熟的、適用于生產(chǎn)環(huán)境的功能。

Java 21 最重要的特性之一就是虛擬線程 (JEP 444)。這些輕量級(jí)的線程降低了編寫、維護(hù)和觀察高吞吐量并行應(yīng)用所需的努力。

在討論新特性之前,讓我們先看一下當(dāng)前的狀態(tài),以便更好地理解它試圖解決什么問題以及帶來了哪些好處。

平臺(tái)線程

在引入虛擬線程之前,我們習(xí)慣使用的線程是 java.lang.Thread,它背后是所謂的平臺(tái)線程 (platform threads)。

這些線程通常與操作系統(tǒng)調(diào)度的內(nèi)核線程一一映射。操作系統(tǒng)線程相當(dāng)“重”,這使得它們適合執(zhí)行所有類型的任務(wù)。

根據(jù)操作系統(tǒng)和配置,它們默認(rèn)情況下會(huì)消耗大約2到10 MB的內(nèi)存。因此,如果你想在高負(fù)載并發(fā)應(yīng)用程序中使用一百萬個(gè)線程,最好要有超過2 TB的可用內(nèi)存!

這存在一個(gè)明顯的瓶頸,限制了我們實(shí)際可以在沒有缺點(diǎn)的情況下?lián)碛械木€程數(shù)量。

每個(gè)請(qǐng)求一個(gè)線程

這很成問題,因?yàn)樗苯优c典型的服務(wù)器應(yīng)用程序“每個(gè)請(qǐng)求一個(gè)線程”的方法相沖突。使用每個(gè)請(qǐng)求一個(gè)線程有很多優(yōu)點(diǎn),例如更簡(jiǎn)單的狀態(tài)管理和清理。但它也創(chuàng)造了可擴(kuò)展性限制。應(yīng)用程序的“并發(fā)單位”,在這種情況下是一個(gè)請(qǐng)求,需要一個(gè)“平臺(tái)并發(fā)單位”。因此,線程很容易被原始CPU能力或網(wǎng)絡(luò)耗盡。

即使“每個(gè)請(qǐng)求一個(gè)線程”有許多優(yōu)點(diǎn),共享重量級(jí)的線程可以更均勻地利用硬件,但也需要一種完全不同的方法。

異步救援

而不是在單個(gè)線程上運(yùn)行整個(gè)請(qǐng)求,它的每個(gè)部分都從池中使用一個(gè)線程,當(dāng)它們的任務(wù)完成時(shí),另一個(gè)任務(wù)可能會(huì)重用同一個(gè)線程。這允許代碼需要更少的線程,但引入了異步編程的負(fù)擔(dān)。

異步編程伴隨著它自己的范例,具有一定的學(xué)習(xí)曲線,并且可能會(huì)使程序更難理解和跟蹤。請(qǐng)求的每個(gè)部分可能都在不同的線程上執(zhí)行,從而創(chuàng)建沒有合理上下文的堆棧跟蹤,并使調(diào)試某些內(nèi)容變得非常棘手甚至幾乎不可能。

Java有一個(gè)用于異步編程的優(yōu)秀API,CompletableFuture。但這是一個(gè)復(fù)雜的API,并且不太適合許多Java開發(fā)人員習(xí)慣的思維方式。

重新審視“每個(gè)請(qǐng)求一個(gè)線程”模型,很明顯,一種更輕量級(jí)的線程方法可以解決瓶頸并提供一種熟悉的做事方式。

輕量級(jí)線程

由于平臺(tái)線程的數(shù)量是無法在沒有更多硬件的情況下改變的,因此需要另一個(gè)抽象層,切斷可怕的 1:1 映射,它是首先造成瓶頸的原因。

輕量級(jí)線程不與特定的平臺(tái)線程綁定,也不會(huì)伴隨大量的預(yù)分配內(nèi)存。它們由運(yùn)行時(shí)而不是底層操作系統(tǒng)調(diào)度和管理。這就是為什么可以創(chuàng)建大量輕量級(jí)線程的原因。

這個(gè)概念并不新鮮,許多語言都采用某種形式的輕量級(jí)線程:

  • Go 語言中的 Goroutine
  • Erlang 進(jìn)程
  • Haskell 線程
  • 等等

Java最終于第21版中引入了自己的輕量級(jí)線程實(shí)現(xiàn):虛擬線程 (Virtual Threads)。

虛擬線程

虛擬線程是一種新的輕量級(jí)java.lang.Thread變體,是Project Loom的一部分,它不是由操作系統(tǒng)管理或調(diào)度的。相反,JVM負(fù)責(zé)調(diào)度。

當(dāng)然,任何實(shí)際的工作都必須在平臺(tái)線程中運(yùn)行,但是JVM使用所謂的“載體線程”(carrier threads) 來“攜帶”任何虛擬線程,以便在它們需要執(zhí)行時(shí)執(zhí)行這些線程。

圖片圖片

JVM/操作系統(tǒng)線程調(diào)度器

所需的平臺(tái)線程在一個(gè) FIFO 工作竊取 ForkJoinPool 中進(jìn)行管理,該池默認(rèn)情況下使用所有可用的處理器,但可以通過調(diào)整系統(tǒng)屬性jdk.virtualThreadScheduler.parallelism來根據(jù)需求進(jìn)行修改。

ForkJoinPool與其他功能(例如并行流)使用的通用池之間的主要區(qū)別在于,通用池以LIFO模式運(yùn)行。

廉價(jià)且豐富的線程

擁有廉價(jià)且輕量級(jí)的線程,可以使用“每個(gè)請(qǐng)求一個(gè)線程”模型,而不必?fù)?dān)心實(shí)際需要多少個(gè)線程。如果你的代碼在虛擬線程中調(diào)用阻塞 I/O 操作,則運(yùn)行時(shí)會(huì)掛起虛擬線程,直到它可以稍后恢復(fù)。

這樣,硬件就可以被優(yōu)化到幾乎最佳的水平,從而實(shí)現(xiàn)高水平的并發(fā)性,因此也實(shí)現(xiàn)高吞吐量。

因?yàn)樗鼈兎浅A畠r(jià),所以虛擬線程不會(huì)被重用或需要池化。每個(gè)任務(wù)都由其自己的虛擬線程表示。

設(shè)置邊界

調(diào)度器負(fù)責(zé)管理載體線程,因此需要一定的邊界和分離,以確保可能的“無數(shù)”虛擬線程按照預(yù)期運(yùn)行。這是通過在載體線程及其可能攜帶的任何虛擬線程之間不保持線程關(guān)聯(lián)來實(shí)現(xiàn)的:

  • 虛擬線程無法訪問載體,Thread.currentThread() 返回虛擬線程本身。
  • 堆棧跟蹤是分開的,任何在虛擬線程中拋出的異常只包含其自己的堆棧幀。
  • 虛擬線程的線程局部變量對(duì)它的載體不可用,反之亦然。
  • 從代碼的角度來看,載體及其虛擬線程共享一個(gè)平臺(tái)線程是不可見的。

讓我們看看代碼

使用Virtual Threads最大的好處是,你不需要學(xué)習(xí)新的范例或復(fù)雜的API,就像使用異步編程一樣。相反,你可以像對(duì)待非虛擬線程一樣處理它們。

創(chuàng)建平臺(tái)線程

創(chuàng)建平臺(tái)線程很簡(jiǎn)單,就像使用 Runnable 創(chuàng)建一樣:

Runnable fn = () -> {
    // your code here
};

Thread thread = new Thread(fn).start();

隨著Project Loom簡(jiǎn)化了新的并發(fā)方法,它還提供了一種創(chuàng)建平臺(tái)支持線程的新方法:

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

實(shí)際上,現(xiàn)在還有一個(gè)完整的fluent API,因?yàn)閛fPlatform()會(huì)返回一個(gè)Thread.Builder.OfPlatform實(shí)例:

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

但你肯定不是來學(xué)習(xí)創(chuàng)建“舊”線程的新方法的,我們想要一點(diǎn)新的東西。繼續(xù)看。

創(chuàng)建虛擬線程

對(duì)于虛擬線程,也有類似的fluent API:

Runnable fn = () -> {
  // your code here
};

Thread thread = Thread.ofVirtual(fn)
                      .start();

除了構(gòu)建器方法之外,你還可以直接使用以下方式執(zhí)行Runnable:

Thread thread = Thread.startVirtualThread(() -> {
  // your code here
});

由于所有虛擬線程始終是守護(hù)線程,因此如果你想在主線程上等待,請(qǐng)不要忘記調(diào)用join()。

創(chuàng)建虛擬線程的另一種方法是使用 Executor:

var executorService = Executors.newVirtualThreadPerTaskExecutor();

executorService.submit(() -> {
  // your code here
});

小結(jié)

盡管Scoped Values (JEP 446) 和Structured Concurrency (JEP 453) 仍然是Java 21中的預(yù)覽功能,但Virtual Threads已經(jīng)成為一個(gè)成熟的、適用于生產(chǎn)環(huán)境的功能。

它們是Java并發(fā)的一種通用且強(qiáng)大的新方法,將對(duì)我們未來的程序產(chǎn)生重大影響。它們使用了熟悉的和可靠的“每個(gè)請(qǐng)求一個(gè)線程”方法,同時(shí)以最優(yōu)化的方式利用所有可用硬件,而不需要學(xué)習(xí)新的范例或復(fù)雜的API。

責(zé)任編輯:武曉燕 來源: 程序新視界
相關(guān)推薦

2023-10-09 08:18:08

域值Java 21結(jié)構(gòu)化

2025-01-03 16:32:13

SpringBoot虛擬線程Java

2021-07-27 16:01:29

高并發(fā)定時(shí)器高性能

2025-09-25 08:23:18

2024-12-04 10:58:57

TomcatJetty高并發(fā)

2023-10-23 19:51:11

Java線程

2011-12-15 13:28:57

2016-12-21 09:33:40

2017-11-27 09:14:29

2023-11-06 08:32:17

FastAPIPython

2021-01-03 09:58:39

StampedLock線程開發(fā)技術(shù)

2015-09-23 09:04:30

java高性能

2024-10-06 14:37:52

2023-09-26 12:16:29

JDK 21Java

2020-11-10 07:46:09

服務(wù)器高并發(fā)高性能

2015-12-11 11:27:57

2015-09-17 18:51:31

2009-01-12 09:22:40

虛擬化高性能計(jì)算HPC

2024-10-07 08:40:56

Spring應(yīng)用程序Java

2024-09-06 07:55:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲小说区图片区都市| 日韩黄色一级视频| 欧美freesex8一10精品| 色综合天天综合网国产成人综合天 | 免费的国产精品| 九色成人免费视频| 老牛影视av老牛影视av| 自拍偷拍欧美日韩| 欧美日韩日本国产| 亚洲一区三区视频在线观看| 黄色a在线观看| 老司机精品久久| 欧美老少配视频| 少妇久久久久久久久久| 亚洲高清999| 色噜噜狠狠成人网p站| 欧美日韩激情四射| aⅴ在线视频男人的天堂| 9i在线看片成人免费| 国产免费一区二区三区在线能观看 | 91久久久免费一区二区| www.夜夜爱| 成人动漫在线播放| 91麻豆国产福利精品| 91在线观看免费| 一级一级黄色片| 中国女人久久久| 欧美激情精品久久久久| 日韩在线观看免| 精品久久美女| 亚洲欧美国产精品专区久久 | 国产主播在线看| wwwav在线| 国产精品国产三级国产普通话99| 久久国产精品 国产精品| 精品人妻少妇AV无码专区| 欧美bbbbb| 欧美专区在线视频| 国产奶水涨喷在线播放| 欧美日韩91| 久久久av一区| 久草手机视频在线观看| 欧美一区二区麻豆红桃视频| 亚洲新中文字幕| 亚洲第九十七页| 超碰cao国产精品一区二区| 欧美一二三在线| 日韩av一卡二卡三卡| 成人在线免费| 欧美性猛交xxxxxxxx| 欧美精品无码一区二区三区| 天天免费亚洲黑人免费| 色就色 综合激情| 37pao成人国产永久免费视频| 欧美少妇网站| 色综合天天性综合| 少妇性饥渴无码a区免费| 理论不卡电影大全神| 欧美日韩色婷婷| av动漫免费看| 亚洲第一会所| 欧美日韩精品福利| 又色又爽又黄视频| 精品久久国产一区| 日韩无一区二区| 人妻 丝袜美腿 中文字幕| 日韩第一区第二区| 欧美变态tickling挠脚心| 亚洲精品无码一区二区| 日本成人中文| 亚洲人成五月天| 特黄一区二区三区| 91精品国产成人观看| 欧美另类暴力丝袜| 伊人久久综合视频| 日本亚洲免费观看| 成人免费自拍视频| 日本xxxxwww| 国产亚洲精品7777| 青青草影院在线观看| 污网站在线免费看| 精品毛片网大全| 国内自拍视频网| 国产亚洲久久| 日韩av影院在线观看| 欧洲美熟女乱又伦| 欧美1区2区| 欧美在线一级va免费观看| 最近中文字幕免费观看| 国产乱人伦偷精品视频免下载 | 欧美精品色图| 欧美激情视频网站| 欧美国产一级片| 国产精品一品二品| 精选一区二区三区四区五区| 在线观看免费版| 亚洲成av人**亚洲成av**| 黄色三级视频片| 一区二区中文字幕在线观看| 亚洲人成网站在线播| 久久艹精品视频| 日本欧美久久久久免费播放网| 999在线免费观看视频| 欧美理论在线观看| 一区二区三区免费网站| 福利在线一区二区三区| 超碰97久久国产精品牛牛| 在线丨暗呦小u女国产精品| 日本三级理论片| 老司机免费视频一区二区 | 天天在线女人的天堂视频| 国产精品久久国产精麻豆99网站| 久久久久免费看黄a片app| 国产一区高清| 国产视频丨精品|在线观看| 曰本女人与公拘交酡| 日韩国产成人精品| 精品国产第一页| 国产三区在线观看| 色综合亚洲欧洲| 91视频在线免费| 综合一区二区三区| 国产精品一区二区久久精品| 青青草免费在线| 亚洲高清免费视频| 91丨porny丨九色| 99久久婷婷| 国产精品久久久久久久久久99| 天天操天天射天天舔| 亚洲乱码日产精品bd| 午夜免费看毛片| 国产在视频线精品视频www666| 国内自拍欧美激情| 国产av无码专区亚洲av| 成人欧美一区二区三区1314| 熟女人妇 成熟妇女系列视频| 九九热播视频在线精品6| 欧美老肥婆性猛交视频| 99热这里精品| 亚洲视频一区二区免费在线观看| 在线看的黄色网址| 欧美色女视频| 国产精品青草久久久久福利99| 国产精品毛片一区二区三区四区| 欧美视频免费在线观看| 一级特级黄色片| 男女精品网站| 欧美日韩精品久久| 日韩免费va| 一本色道久久88亚洲综合88| japanese国产在线观看| 国产丝袜美腿一区二区三区| 欧美精品第三页| 国内精品久久久久久久影视简单 | www.久久爱.com| 日韩在线一区二区三区免费视频| 国产一区二区在线不卡| 亚洲精品第一国产综合野| 国产又黄又嫩又滑又白| 亚洲清纯自拍| 日本高清一区| 欧美成人福利| 欧美国产第一页| 天堂v在线观看| 欧美日韩亚洲精品一区二区三区 | 亚洲欧美另类图片小说| 日本少妇激三级做爰在线| 欧美三级网页| 久久婷婷开心| 国产成人a视频高清在线观看| 久久精品99久久久久久久久 | 91浏览器在线观看| 欧美aaaaaaaaaaaa| 欧美在线视频你懂得| 性久久久久久久久久久| 久久精品九九| 亚洲人体一区| 中文字幕一区二区三区四区久久| 亚洲18私人小影院| 成年人在线视频| 日韩一区二区三区在线观看| 影音先锋亚洲天堂| 日本一区二区三区在线不卡| 黄色一级片免费的| 亚洲视频碰碰| 亚洲二区三区四区| 日韩欧洲国产| 国产高清在线不卡| 中文在线字幕免费观看| 亚洲美女av电影| 国产喷水吹潮视频www| 午夜成人免费电影| 成人性视频免费看| 成人av在线播放网站| 男女污污的视频| 午夜激情一区| 日本免费一区二区三区| 日韩免费一级| 国产精品久久久久久久久久久不卡| 免费在线视频欧美| 日韩电影中文字幕在线| 国产熟女一区二区三区五月婷| 精品av在线播放| 久久精品亚洲a| 91社区在线播放| 国产伦精品一区二区三区妓女下载 | 久久精品在这里| 亚洲一级片免费观看| 三级欧美韩日大片在线看| 屁屁影院ccyy国产第一页| 欧洲杯什么时候开赛| av激情久久| 国产精品久久久久久妇女| 久久久久久久一| 韩国av网站在线| 亚洲图片欧美日产| 特级丰满少妇一级aaaa爱毛片| 欧美精品久久天天躁| 日韩精品久久久久久免费| 亚洲一区在线观看视频| 国产精品视频一区二区在线观看| 久久夜色精品国产噜噜av| 男人的天堂免费| 国产在线乱码一区二区三区| 亚洲国产另类久久精品| 日韩精品久久久久久久| 亚洲视频资源在线| 国产真人真事毛片视频| 久久久久九九视频| 捆绑裸体绳奴bdsm亚洲| 国产成人av电影免费在线观看| 奇米影视四色在线| 日韩高清在线一区| 日韩一级免费在线观看| 亚洲美洲欧洲综合国产一区| www.国产在线播放| 在线一区免费| 免费在线精品视频| 99久久国产综合精品成人影院| 亚洲欧美日韩精品在线| 成人在线亚洲| 日韩电影免费观看在| 国产精品欧美三级在线观看| 免费av一区二区三区| 中文字幕精品影院| 欧美日韩一区二区三区在线观看免| 欧美三级电影在线| 精品久久蜜桃| 亚洲精品aaaaa| 日本精品国语自产拍在线观看| 国产精品亚洲人成在99www| 久久久精品国产一区二区三区| 欧美1区2区3区4区| 久久久久久99| 国产探花在线精品| 午夜精品亚洲一区二区三区嫩草 | 成人免费性视频| 黄色在线成人| 免费看一级大黄情大片| 国产伦理一区| 欧美伦理片在线看| 狠狠色狠狠色合久久伊人| 免费人成视频在线播放| 成人一级片网址| 成年人的黄色片| 国产日韩影视精品| 三级影片在线观看| 亚洲黄色免费网站| 日韩欧美一级视频| 欧美性生交片4| 国产又粗又黄又爽的视频| 日韩一级片网站| 天天干视频在线观看| 亚洲一区二区精品| 日本免费中文字幕在线| 欧美激情在线一区| 二吊插入一穴一区二区| 国产日韩欧美在线| 国产乡下妇女做爰视频| 卡一卡二国产精品| 永久看看免费大片| 久久伊人蜜桃av一区二区| 欧美乱大交做爰xxxⅹ小说| 亚洲激情图片一区| 午夜精品久久久久久久蜜桃| 在线播放视频一区| 香蕉视频黄色片| 日韩小视频在线| 人在线成免费视频| 91日韩在线播放| 在线日韩一区| 麻豆映画在线观看| 久久亚洲欧美| 性折磨bdsm欧美激情另类| 国产午夜精品久久久久久久| 在线免费日韩av| 色综合久久中文字幕| 精品人妻一区二区三区换脸明星| 亚洲女人被黑人巨大进入| 最新av在线播放| 国产成人在线播放| 国产精品45p| 超碰免费在线公开| 久久一日本道色综合久久| 日本中文字幕精品| 欧美激情在线免费观看| 男女视频免费看| 欧美一区二区网站| 国产福利在线视频| 2019最新中文字幕| 一区二区三区高清在线观看| 色就是色欧美| 久久av一区二区三区| 人妻换人妻a片爽麻豆| 中文字幕一区二区三区在线播放| 啦啦啦免费高清视频在线观看| 日韩精品在线一区二区| 欧美另类极品| 国产精品成人久久久久| 欧美电影完整版在线观看| 91精品国产毛片武则天| 奇米精品一区二区三区在线观看| 久久久久久久久久久国产精品| 亚洲一区在线观看免费观看电影高清| 国产一区二区三区视频免费观看| 亚洲人成网站999久久久综合| 麻豆视频在线观看免费网站黄| 国产二区一区| 欧美日韩1区2区3区| 一级日本黄色片| 中文字幕一区二区人妻在线不卡| 亚洲一区二区三区小说| 国产露脸国语对白在线| 色婷婷综合久久久久| 四虎4545www精品视频| 青青草国产精品| 免费看的黄色欧美网站| av网站免费在线播放| 欧美性xxxx极品高清hd直播| 天天舔天天干天天操| 97成人在线视频| 日韩av中文字幕一区| 精品久久久久久久久久中文字幕| 国产h在线观看| 麻豆国产精品va在线观看不卡| 亚洲第一会所| 亚洲免费视频一区| 九九热在线视频观看这里只有精品| 国产一二三四视频| 欧美精品丝袜中出| 国产精品刘玥久久一区| 亚洲综合在线做性| 欧美日韩国产成人精品| 精品人妻人人做人人爽夜夜爽| 亚洲永久精品大片| 人妻偷人精品一区二区三区| 性色av一区二区三区红粉影视| 在线日本制服中文欧美| 在线观看免费成人av| 18欧美亚洲精品| 国产ts人妖调教重口男| 久久久久久久影院| 亚洲第一论坛sis| 成人中文字幕av| 亚洲欧美一区二区三区久本道91| 亚洲av无码国产精品永久一区| 欧美激情精品久久久久久免费印度 | 色婷婷精品久久二区二区密| 疯狂蹂躏欧美一区二区精品| 成人免费在线电影| 91美女福利视频高清| 国模吧视频一区| 狠狠人妻久久久久久综合蜜桃| 欧美亚一区二区| 在线观看中文| 久久精品人成| 激情都市一区二区| 国产精品第九页| 国产亚洲精品久久| 国产美女精品视频免费播放软件| 国产不卡一区二区视频| 国产人成一区二区三区影院| 国产麻豆一精品一男同| 97激碰免费视频| 欧美电影免费播放| 中文字幕在线视频播放| 欧美性猛交xxxx黑人交| 国产后进白嫩翘臀在线观看视频| 久久99精品久久久久久三级| 久久99国内精品| 五月婷婷激情网| 日韩在线观看精品| 农村少妇一区二区三区四区五区| 尤蜜粉嫩av国产一区二区三区| 亚洲电影在线播放| 成人精品一区二区三区免费| 国产精品一区免费观看| 狠狠色综合日日| 天天操天天干天天摸| 性欧美亚洲xxxx乳在线观看|