国产美女主播视频一区_国产精品蜜臀在线观看_亚洲成人动漫一区_亚洲视屏在线播放

首頁(yè) > 民航

熱點(diǎn)聚焦:性能提升 200% !SpringBoot 虛擬線程來(lái)了

來(lái)源:程序員客棧 時(shí)間:2023-06-24 23:48:38

在以往的項(xiàng)目中,我們面臨了這樣一種情況:我們收到了數(shù)千個(gè)認(rèn)證請(qǐng)求。為了確保安全性,我們依靠第三方系統(tǒng)發(fā)送短信 OTP 進(jìn)行驗(yàn)證。然而,有時(shí)候第三方系統(tǒng)花費(fèi)的時(shí)間比預(yù)期的要長(zhǎng),導(dǎo)致延遲。我們采用了每個(gè)請(qǐng)求一個(gè)線程的模型,這意味著許多線程處于等待狀態(tài),并且新請(qǐng)求都在隊(duì)列中。我們?cè)噲D通過(guò)微調(diào)線程數(shù)量來(lái)優(yōu)化性能,但當(dāng)時(shí)我們希望有虛擬線程功能。當(dāng)時(shí) Java 中沒(méi)有虛擬線程的概念,這就是 Project Loom 的作用。


【資料圖】

虛擬線程
什么是 Project Loom?

什么是 Project Loom?這是 Oracle 的一個(gè)新項(xiàng)目,主要目標(biāo)是顯著減少編寫(xiě)、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序的工作量。換句話說(shuō),Project Loom 旨在支持和推進(jìn)一個(gè)高吞吐量、輕量級(jí)的 Java 并發(fā)模型,因?yàn)閭鹘y(tǒng)的操作系統(tǒng)線程(Java 并發(fā)模型的核心)有一些缺點(diǎn),并且在計(jì)算上相當(dāng)昂貴。反之,虛擬線程是更輕量級(jí)的線程,不與操作系統(tǒng)線程連接(由 JVM 管理)。這意味著虛擬線程是“每請(qǐng)求對(duì)應(yīng)一個(gè)線程”編程的理想選擇,可以創(chuàng)建大量的虛擬線程,而不會(huì)降低吞吐量。開(kāi)發(fā)人員可以使用現(xiàn)有的 JDK 工具和技術(shù)快速排除故障、調(diào)試和分析并發(fā)應(yīng)用程序,在發(fā)布的 Spring Boot 3.1 中可用。作為 Spring 開(kāi)發(fā)者,了解虛擬線程的概念并理解它們?cè)陂_(kāi)發(fā)過(guò)程中的重要性非常關(guān)鍵。

如何使用虛擬線程Java 版本選擇

Java 19 中引入的虛擬線程非常易于使用,筆者使用的 Mac M1 系列,這里選擇 Azul Zulu 發(fā)行版 20.30.11 版本[1]

azul 20
創(chuàng)建測(cè)試項(xiàng)目

使用 Spring Initializer 或 IDE 創(chuàng)建項(xiàng)目。添加 spring-web 依賴項(xiàng)并添加元數(shù)據(jù)。(注意版本選擇 SpringBoot 3.1 ,Java 20)

開(kāi)啟虛擬線程功能
默認(rèn)報(bào)錯(cuò)

默認(rèn)情況下, Java19 的虛擬線程功能是禁用狀態(tài)的,需要通過(guò)相關(guān) maven 編譯配置開(kāi)啟。

org.springframework.bootspring-boot-maven-pluginorg.apache.maven.pluginsmaven-compiler-plugin--enable-preview

通過(guò)配置 bean 啟用虛擬線程

@Bean?TomcatProtocolHandlerCustomizerthreadExecutorCustomizer()?{??return?protocolHandler?->protocolHandler.setExecutor(Executors.newVirtualThreadPerTaskExecutor());?}

這個(gè) Bean 是一個(gè)自定義的 Tomcat 協(xié)議處理器,負(fù)責(zé)處理 Spring Boot 應(yīng)用程序中傳入的請(qǐng)求。這個(gè)自定義程序的目的是配置協(xié)議處理器使用的執(zhí)行器。

在 threadExecutorCustomizer 方法內(nèi)部,使用 Lambda 表達(dá)式來(lái)自定義協(xié)議處理器。protocolHandler 參數(shù)代表正在自定義的 Tomcat 協(xié)議處理器的實(shí)例。

在 Lambda 表達(dá)式中,調(diào)用 protocolHandler 對(duì)象的 setExecutor() 方法,用于為協(xié)議處理器設(shè)置執(zhí)行器。執(zhí)行器負(fù)責(zé)執(zhí)行任務(wù),例如處理傳入的請(qǐng)求。

在這種情況下,使用 Executors.newVirtualThreadPerTaskExecutor() 方法創(chuàng)建一個(gè)新的使用虛擬線程的執(zhí)行器。虛擬線程是輕量級(jí)線程,可以在單個(gè)操作系統(tǒng)線程中并發(fā)執(zhí)行任務(wù)。這意味著可以同時(shí)執(zhí)行多個(gè)任務(wù),提高性能和資源利用率。

增加測(cè)試端點(diǎn)

@Slf4j@RequestMapping@RestControllerpublic?class?DemoController?{????@GetMapping("/")????public?String?demo()?{????????try?{????????????TimeUnit.MILLISECONDS.sleep(300);????????}?catch?(InterruptedException?e)?{????????????log.error(e.getMessage());????????}????????return?"Current?Thread?Name:?"?+?Thread.currentThread();????}}

上手使用

我們可以通過(guò) Thread.currentThread() API 獲取當(dāng)前請(qǐng)求線程的元信息,以判斷虛擬線程是否已經(jīng)正確開(kāi)啟。

性能測(cè)試對(duì)比100 線程測(cè)試不開(kāi)啟虛擬線程
吞吐量 300/s
開(kāi)啟虛擬線程
吞吐量 300/s
300 線程測(cè)試不開(kāi)啟虛擬線程
吞吐量 650/s
開(kāi)啟虛擬線程
吞吐量 950/s
500 線程測(cè)試不開(kāi)啟虛擬線程
吞吐量 650/s
開(kāi)啟虛擬線程
吞吐量 1500/s
圖表輸出總結(jié)

通過(guò)以上我們發(fā)現(xiàn),在處理阻塞操作時(shí),虛擬線程特別有益。隨著并發(fā)請(qǐng)求數(shù)量的增加,虛擬線程的性能提升越來(lái)越明顯。上述測(cè)試都是在未對(duì) Spring Boot 項(xiàng)目進(jìn)行調(diào)優(yōu)和優(yōu)化的情況下進(jìn)行的。

參考資料[1]

Azul Zulu 發(fā)行版 20.30.11 版本: https://www.azul.com/downloads/?version=java-20-sts&os=macos&architecture=arm-64-bit&package=jdk#zulu

相關(guān)稿件

熱點(diǎn)聚焦:性能提升 200% !SpringBoot 虛擬線程來(lái)了

白玉蘭獎(jiǎng)看點(diǎn)多,女星紅毯千姿百態(tài),吳越拿下大獎(jiǎng),趙麗穎有些可惜

干豆角絲燉干豆腐的家常做法?

端午節(jié),來(lái)打卡武漢123歲輪渡

把“空間站”建在地球上——走進(jìn)我國(guó)航天領(lǐng)域首個(gè)大科學(xué)裝置

端午節(jié)假期出游人次破億 文旅產(chǎn)品服務(wù)豐富-全球快資訊

廈門地鐵6號(hào)線角美延伸段角社盾構(gòu)區(qū)間實(shí)現(xiàn)雙線貫通

簡(jiǎn)訊:“智能農(nóng)機(jī)”讓種地更有底氣

8月1日起,在廈門過(guò)馬路低頭“刷手機(jī)” 罰款!

端午檔總票房達(dá)8.48億,暫列影史第二

美失事潛艇5名富豪或0.03秒內(nèi)死亡 到底是怎么回事? 新動(dòng)態(tài)

這里,成了端午節(jié)最靚的景點(diǎn)! 世界即時(shí)

足協(xié)杯-平科破門呂文君李圣龍建功 上海海港3-1勝?gòu)V州晉級(jí)-每日速遞

如何辨認(rèn)婚禮儀式上已故親人,探討老公生日應(yīng)該送什么禮物? 世界速讀

新動(dòng)態(tài):照片太大了怎么改小kb ?怎么將圖片kb壓縮變小

熱消息:《腹黑醫(yī)生愛(ài)上我》20‖雙顧(魏野)年下攻

環(huán)球觀天下!俄媒:俄南部軍區(qū)位于羅斯托夫總部大樓已被“瓦格納”包圍

上海一公共建筑突發(fā)火災(zāi)

6·25號(hào)~7·10號(hào) 狗·豬·猴 最能賺錢的生肖-熱消息

天天要聞:未來(lái)兩周,運(yùn)勢(shì)大旺,桃花上門,邂逅愛(ài)情,真愛(ài)相伴,甜蜜相隨

又一家!突然宣布停業(yè)!

臉上有黑痣是什么原因(為什么臉上會(huì)長(zhǎng)痣?)_天天新視野

皮膚不好吃什么維生素(皮膚不好吃維生素E好還是維生素C好)|全球播報(bào)

有人問(wèn)行業(yè)分析的數(shù)據(jù)從哪里找

過(guò)度喂養(yǎng)是傷害!判斷孩子是否吃飽,看這些信號(hào)就夠了

“瓦格納”稱占領(lǐng)俄南部軍區(qū)指揮部_聚看點(diǎn)

2023河南美術(shù)生本科分?jǐn)?shù)線多少分(含2021-2022年) 全球微速訊

2023年云南普通高校招生網(wǎng)上填報(bào)志愿考生須知

超任經(jīng)典《超級(jí)瑪利歐RPG》重制版發(fā)表,碧姬公主全新作蓄勢(shì)待發(fā)

與D3一樣,暴雪確認(rèn)《暗黑破壞神4》每次戰(zhàn)斗通行證賽季皆需重練新角色


主站蜘蛛池模板: 国产精品久久久久91| 日韩亚洲欧美中文在线| 欧美一级视频一区二区| 久久精品美女| 国产免费色视频| 99亚洲精品视频| 久久久999国产精品| 国产欧美中文字幕| 国产成人精品av在线| 久久亚洲精品毛片| 日韩免费中文字幕| 岛国一区二区三区高清视频| 国内自拍欧美激情| 丝袜美腿精品国产二区| 国产精品美女久久久免费| 国产伦理久久久| 国产精品露脸自拍| 国产精品免费久久久| 天天干天天操天天干天天操| 亚洲国产一区二区在线| 91久久大香伊蕉在人线| 99在线观看视频免费| 日韩在线视频国产| 国产精品亚洲综合天堂夜夜| 高清不卡日本v二区在线| 91精品国产自产在线| 久久九九免费视频| 久久资源av| 日产精品高清视频免费| 日韩中文字幕在线视频播放| 亚洲最大av网| 国产偷久久久精品专区| 国模吧一区二区| 国产女人精品视频| 久久久久久国产精品久久| 日韩暖暖在线视频| 久久久久久久网站| 91精品免费看| 久久激情五月丁香伊人| 久久久久久国产免费| 99精品视频播放|