精品欧美一区二区三区在线观看 _久久久久国色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)

久久99亚洲网美利坚合众国| 精品人妻午夜一区二区三区四区 | 天堂一区二区在线免费观看| 亚洲欧美国产日韩天堂区| 中文字幕第36页| 黄网站app在线观看| 99精品视频在线免费观看| 国产精品jizz在线观看麻豆| www.超碰在线观看| 国产精品欧美日韩一区| 欧美一区二区免费视频| 欧美污视频网站| 成人在线app| 久久久一区二区| 999视频在线观看| 免费黄色片视频| 国产一区二区三区四区三区四 | 在线看av的网址| 99久久99久久精品免费观看| 91精品美女在线| 少妇一级淫片免费放中国| 68国产成人综合久久精品| 日韩精品在线免费播放| 337p日本欧洲亚洲大胆张筱雨| 欧美性suv| 亚洲一区av在线| 99精品视频网站| 国产日韩精品在线看| 成人国产亚洲欧美成人综合网| 国产精品视频成人| 欧美 日韩 精品| 亚洲人体大胆视频| 欧美日本高清一区| 三级在线观看免费大全| 国产一区国产二区国产三区| 亚洲国产成人一区| 国产调教打屁股xxxx网站| 欧美一级做一级爱a做片性| 色综合激情五月| 阿v天堂2017| 丰满的护士2在线观看高清| 国产精品国产精品国产专区不片| 欧美lavv| 免费看男男www网站入口在线| 成人国产一区二区三区精品| 超碰在线观看97| 国产福利小视频| 国产精品自拍在线| 成人日韩在线电影| 国产又粗又猛又爽又黄91| 免费高清视频精品| 国产美女久久久| 国产精品无码一区| 美美哒免费高清在线观看视频一区二区 | 一本一道久久a久久精品 | 暗呦丨小u女国产精品| 91九色精品| 久久久久www| 在线免费观看亚洲视频| 综合激情在线| 欧美高清在线播放| 国产精品6666| 香蕉视频成人在线观看| 日韩av免费在线| 自拍偷拍精品视频| 久久成人羞羞网站| 91视频最新| 五月婷婷在线观看视频| 久久久久久毛片| 日韩在线电影一区| 久久日韩视频| 亚洲国产精品欧美一二99| 无码粉嫩虎白一线天在线观看| 国产在线看片免费视频在线观看| 精品欧美激情精品一区| av高清在线免费观看| 妞干网免费在线视频| 91成人看片片| 涩涩网站在线看| 日本一区二区三区视频在线看 | 国产精品中文在线| 国产高清免费观看| 91网站最新网址| 日本一区免费观看| 国产福利视频在线观看| 亚洲va韩国va欧美va| 欧美视频免费播放| 免费观看性欧美大片无片| 亚洲成人国产精品| 久久精品三级视频| 欧美成人中文| 奇米4444一区二区三区| 国产又粗又猛又爽| 99re66热这里只有精品3直播| 亚洲7777| 波多野结衣在线观看| 在线视频国内一区二区| 日韩高清一二三区| 欧美亚洲精品在线| 国模私拍视频一区| 亚洲综合精品国产一区二区三区| 粉嫩av一区二区三区粉嫩| 日韩久久不卡| 国产美女福利在线观看| 在线观看视频一区二区| 欧美69精品久久久久久不卡| 国产精品密蕾丝视频下载| 欧美久久精品一级黑人c片| aaa在线视频| 国产suv一区二区三区88区| 色视频一区二区三区| aa级大片免费在线观看| 欧美二区乱c少妇| ass精品国模裸体欣赏pics| 亚洲精品中文字幕乱码| 国产精品成久久久久三级| 亚洲av少妇一区二区在线观看| 国产亚洲短视频| 波多野结衣之无限发射| 精品亚洲a∨一区二区三区18| 在线亚洲男人天堂| 国产精品免费精品一区| 不卡大黄网站免费看| 黄色一级片av| 日本欧美在线| 一本色道久久88亚洲综合88| av大片免费观看| 成人不卡免费av| 久久久久福利视频| 日韩欧乱色一区二区三区在线| 亚洲视频自拍偷拍| 精品免费囯产一区二区三区 | 97超碰在线公开在线看免费| 欧美影视一区在线| 国产色视频一区二区三区qq号| 亚洲国产第一| 国产精品乱码视频| 黄色影院在线看| 日韩精品一区二| 九九在线观看视频| 国产成人福利片| 国产1区2区3区中文字幕| 国产精品亚洲欧美一级在线| 久久精品国产69国产精品亚洲| 在线观看毛片网站| 国产精品女同互慰在线看| 日韩欧美黄色大片| 操欧美老女人| 国产精品亚洲激情| 日本韩国在线视频爽| 欧美日韩精品一区二区三区| 亚洲女人毛茸茸高潮| 美女国产一区二区三区| 综合色婷婷一区二区亚洲欧美国产| 粉嫩av一区二区三区四区五区 | 大桥未久在线播放| 精品国产一区二区三区av性色| 久久免费小视频| 成人高清视频在线观看| 欧美日韩成人免费视频| 宅男在线一区| 国产女同一区二区| av中文字幕在线播放| 精品1区2区在线观看| 国产成人在线免费视频| 国产精品天美传媒沈樵| 黄色aaaaaa| 国内精品亚洲| 久久精品一二三区| 久久精品黄色| 欧美另类高清videos| 十八禁一区二区三区| 欧美体内谢she精2性欧美| 日本二区在线观看| 精品一区二区三区视频| 成人免费a级片| 最新精品国偷自产在线| 成人激情视频网| av电影院在线看| 在线观看欧美视频| 国产aⅴ爽av久久久久成人| 午夜精品福利一区二区三区av | 777一区二区| 午夜激情一区| 日本免费一区二区三区| 精品999日本久久久影院| 97视频在线免费观看| 69久久精品| 精品久久久久av影院| 中文字幕日本视频| 亚洲一区二区精品3399| 免费一级黄色录像| 成人午夜电影小说| 五月天激情视频在线观看| 国产精品大片| 亚洲日本无吗高清不卡| 久久久精品国产**网站| 成人av在线亚洲| 成人影院大全| 欧美黑人性视频| 91在线视频| 日韩电影在线观看永久视频免费网站| 午夜精品久久久久久久蜜桃| 一区二区三区日韩| 少妇精品无码一区二区免费视频| 粉嫩13p一区二区三区| 手机在线成人免费视频| 国产精品丝袜xxxxxxx| 精品日韩在线播放| 日韩av大片| 欧美在线激情| 国产女人18毛片水真多18精品| 成人高清视频观看www| 中文字幕在线视频久| 久久99久国产精品黄毛片入口| 2021av在线| 亚洲天堂av女优| 日韩一级在线播放| 欧美第一区第二区| 在线观看视频二区| 在线视频国内一区二区| 天天操天天操天天操天天| 一区二区三区高清| 久久国产精品国语对白| 国产精品美女视频| 成人黄色免费网址| 国产网站一区二区| 西西444www无码大胆| 99视频有精品| 无码国产精品一区二区免费式直播 | 国精产品一品二品国精品69xx| 欧美日韩一卡二卡| 一级片在线免费播放| 一本色道综合亚洲| 黄色在线视频网址| 色吊一区二区三区| 神马久久久久久久| 日韩欧美成人免费视频| 毛片基地在线观看| 一本一道波多野结衣一区二区| 五月婷婷开心网| 午夜不卡在线视频| 国产香蕉视频在线| 色综合天天做天天爱| 91精品国产高清一区二区三密臀| 天天影视色香欲综合网老头| 日本亚洲欧美在线| 午夜精品一区二区三区免费视频 | 在线观看www91| 日本中文字幕在线观看视频| 欧美性猛交一区二区三区精品| 日韩黄色一级视频| 欧美精品在线观看播放| 国产精品怡红院| 日韩美一区二区三区| 黄色美女一级片| 亚洲精品资源美女情侣酒店| 日本中文字幕电影在线观看| 亚洲欧洲高清在线| av电影在线观看一区二区三区| 中文字幕欧美日韩精品| 黄网站免费在线播放| 欧美乱人伦中文字幕在线| 国产羞羞视频在线播放| 奇门遁甲1982国语版免费观看高清| 偷拍中文亚洲欧美动漫| 国产精品人成电影在线观看| 懂色av色香蕉一区二区蜜桃| aaa级精品久久久国产片| 精品国产一区二区三区成人影院| 美日韩免费视频| 激情婷婷综合| 精品国产三级a∨在线| 136国产福利精品导航网址| 欧美一级黄色片视频| 蜜桃精品在线观看| 日本人妻一区二区三区| 久久综合久久鬼色| 成年人二级毛片| 午夜久久电影网| 久久久久久久久久一级| 538在线一区二区精品国产| 日韩在线一区二区三区四区| 亚洲热线99精品视频| 久草资源在线观看| 91精品国产亚洲| 国产一区二区三区四区五区3d | 免费看涩涩视频| 国产高清亚洲一区| 中文字幕人妻一区二区| 亚洲色图一区二区| 日韩精品1区2区| 欧美一区二区三级| 裸体xxxx视频在线| 九九热视频这里只有精品| xxxxxx欧美| 99精品99久久久久久宅男| 国产亚洲欧美日韩在线观看一区二区 | 五月天丁香久久| 国产偷拍一区二区| 伊人男人综合视频网| 色婷婷视频在线观看| 国产精品一区二区电影| 台湾佬综合网| 97av中文字幕| 免费不卡在线观看| 色噜噜在线观看| 亚洲欧美日韩国产综合| 中文字幕视频网| 欧美变态口味重另类| 自拍视频在线播放| 国产成人免费91av在线| 国产精品久久久久av蜜臀| 手机成人av在线| 日韩福利视频导航| 欧美黑人欧美精品刺激| 亚洲免费在线观看| 在线视频1卡二卡三卡| 亚洲欧美日本精品| 2019中文字幕在线电影免费| 成人做爽爽免费视频| 不卡一区2区| 好男人www社区| 91视视频在线直接观看在线看网页在线看 | 亚洲国产精品激情在线观看| 欧美精品亚洲精品日韩精品| 精品国产伦一区二区三区观看方式| 暖暖日本在线观看| 国产精品免费电影| 欧美日韩激情在线一区二区三区| 鲁一鲁一鲁一鲁一色| 成人免费看黄yyy456| 国产精久久久久久| 欧美精品一区二区三区高清aⅴ| av免费网站在线观看| 91在线精品视频| 国产精品久久久久久影院8一贰佰| 欧美精品性生活| 国产清纯白嫩初高生在线观看91| 欧美在线观看不卡| 亚洲久久久久久久久久久| 中文在线最新版地址| 久久国产精品亚洲va麻豆| av成人天堂| 国产肉体xxxx裸体784大胆| 午夜精品福利在线| 日本福利午夜视频在线| 日本老师69xxx| 国产99久久久国产精品成人免费 | 免费日韩电影| 日韩精品成人一区二区在线观看| 老司机精品视频网站| 国产毛片欧美毛片久久久| 欧美日韩激情一区二区| 高清全集视频免费在线| 999视频在线观看| 亚洲精品123区| 色欲av无码一区二区三区| 欧美亚洲日本一区| 日本三级视频在线播放| 91精品黄色| 国产精品视区| 欧美日韩国产黄色| 日韩一区和二区| av2020不卡| 午夜精品福利一区二区| 精品在线你懂的| 国产亚洲自拍av| 日韩精品在线观看视频| 8av国产精品爽爽ⅴa在线观看| 一区二区av| 成人免费的视频| 亚洲欧美综合自拍| 日韩有码在线播放| 亚洲免费一区三区| 日韩精品一区二区三区久久| 国产精品理论在线观看| 亚洲精品成av人片天堂无码| 欧美壮男野外gaytube| 日韩中字在线| 中文字幕天堂av| 欧美午夜精品一区二区三区| 一二三四区在线观看| 久久伊人一区| 国产资源在线一区| 日韩在线视频免费播放| 日韩一区av在线| 中国av一区| 亚洲天堂伊人网| 色综合久久久久综合99| caoporn免费在线| 欧美午夜视频在线| 国产精品18久久久久| 亚洲不卡在线视频| 欧美日韩福利视频| 国产免费播放一区二区| 99久久综合网| 欧美日本不卡视频| 涩涩av在线| 日韩欧美猛交xxxxx无码|