AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

JDK19推出新特性虛擬線(xiàn)程是什么?

來(lái)源: 責(zé)編: 時(shí)間:2024-01-23 08:43:34 272觀看
導(dǎo)讀JDK19推出了幾個(gè)新的特性,其中最具有特點(diǎn)的有以下幾個(gè)。圖片記錄模式(預(yù)覽版):使用記錄模式增強(qiáng)Java編程語(yǔ)言以解構(gòu)記錄值,可以嵌套記錄模式和類(lèi)型模式,實(shí)現(xiàn)強(qiáng)大的、聲明性的和可組合的數(shù)據(jù)導(dǎo)航和處理形式。這是一個(gè)預(yù)覽語(yǔ)

JDK19推出了幾個(gè)新的特性,其中最具有特點(diǎn)的有以下幾個(gè)。5PH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片5PH28資訊網(wǎng)——每日最新資訊28at.com

  1. 記錄模式(預(yù)覽版):使用記錄模式增強(qiáng)Java編程語(yǔ)言以解構(gòu)記錄值,可以嵌套記錄模式和類(lèi)型模式,實(shí)現(xiàn)強(qiáng)大的、聲明性的和可組合的數(shù)據(jù)導(dǎo)航和處理形式。這是一個(gè)預(yù)覽語(yǔ)言功能。
  2. Linux/RISC-V移植:將JDK移植到Linux/RISC-V,目前僅支持RISC-V的RV64GV配置(包含向量指令的通用64位ISA)。將來(lái)可能會(huì)考慮支持其他RISC-V配置,例如通用32位配置(RV32G)。
  3. 外部函數(shù)和內(nèi)存API(預(yù)覽版):引入一個(gè)API,Java程序可以通過(guò)該API與Java運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作。這是一個(gè)預(yù)覽版API。
  4. 虛擬線(xiàn)程(預(yù)覽版):將虛擬線(xiàn)程引入Java平臺(tái)。虛擬線(xiàn)程是輕量級(jí)線(xiàn)程,可顯著地減少編寫(xiě)、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序的工作量。
  5. 結(jié)構(gòu)化并發(fā)(培養(yǎng)階段):旨在通過(guò)結(jié)構(gòu)化并發(fā)API簡(jiǎn)化多線(xiàn)程編程。這種并發(fā)性將在不同線(xiàn)程中運(yùn)行的多個(gè)任務(wù)視為單個(gè)工作單元,以簡(jiǎn)化錯(cuò)誤處理和取消,提高了可靠性和可觀察性。這個(gè)特性來(lái)自Project Loom,它引入了一個(gè)新的輕量級(jí)并發(fā)模型。

我們看到其中有一個(gè)比較值得關(guān)注的那就是新增了虛擬線(xiàn)程。到底什么是虛擬線(xiàn)程,和我們現(xiàn)在使用的線(xiàn)程有啥區(qū)別呢?5PH28資訊網(wǎng)——每日最新資訊28at.com

線(xiàn)程的實(shí)現(xiàn)方式

在操作系統(tǒng)中,線(xiàn)程是比進(jìn)程更輕量級(jí)的調(diào)度執(zhí)行單位,線(xiàn)程的引入可以把一個(gè)進(jìn)程的資源分配和執(zhí)行調(diào)度分開(kāi),各個(gè)線(xiàn)程既可以共享進(jìn)程資源,又可以獨(dú)立調(diào)度。5PH28資訊網(wǎng)——每日最新資訊28at.com

線(xiàn)程的實(shí)現(xiàn)方式主要有三種:分別是使用內(nèi)核線(xiàn)程實(shí)現(xiàn)、使用用戶(hù)線(xiàn)程實(shí)現(xiàn)以及使用用戶(hù)線(xiàn)程加輕量級(jí)進(jìn)程混合實(shí)現(xiàn)。5PH28資訊網(wǎng)——每日最新資訊28at.com

「使用內(nèi)核線(xiàn)程實(shí)現(xiàn)」:內(nèi)核線(xiàn)程(Kernel-Level Thread,KLT)直接由操作系統(tǒng)內(nèi)核支持,由內(nèi)核完成線(xiàn)程切換,內(nèi)核通過(guò)操縱調(diào)度器對(duì)線(xiàn)程進(jìn)行調(diào)度,并負(fù)責(zé)將線(xiàn)程的任務(wù)映射到各個(gè)處理器上,同時(shí)向應(yīng)用程序提供API接口來(lái)管理線(xiàn)程。應(yīng)用程序一般不直接使用內(nèi)核線(xiàn)程,而是使用內(nèi)核線(xiàn)程的一種高級(jí)接口——輕量級(jí)進(jìn)程(Light Weight Process,LWP)。5PH28資訊網(wǎng)——每日最新資訊28at.com

應(yīng)用程序一般不會(huì)直接去使用內(nèi)核線(xiàn)程,而是去使用內(nèi)核線(xiàn)程的一種高級(jí)接口——輕量級(jí)進(jìn)程(Light Weight Process,LWP),輕量級(jí)進(jìn)程就是我們通常意義上所講的線(xiàn)程,由于每個(gè)輕量級(jí)進(jìn)程都由一個(gè)內(nèi)核線(xiàn)程支持,因此只有先支持內(nèi)核線(xiàn)程,才能有輕量級(jí)進(jìn)程。5PH28資訊網(wǎng)——每日最新資訊28at.com

有了內(nèi)核線(xiàn)程的支持,每個(gè)輕量級(jí)進(jìn)程都成為一個(gè)獨(dú)立的調(diào)度單元,即使有一個(gè)輕量級(jí)進(jìn)程在系統(tǒng)調(diào)用中阻塞了,也不會(huì)影響整個(gè)進(jìn)程繼續(xù)工作。5PH28資訊網(wǎng)——每日最新資訊28at.com

但是輕量級(jí)進(jìn)程具有它的局限性:首先,由于是基于內(nèi)核線(xiàn)程實(shí)現(xiàn)的,所以各種線(xiàn)程操作,如創(chuàng)建、析構(gòu)及同步,都需要進(jìn)行系統(tǒng)調(diào)用。而系統(tǒng)調(diào)用的代價(jià)相對(duì)較高,需要在用戶(hù)態(tài)(User Mode)和內(nèi)核態(tài)(Kernel Mode)中來(lái)回切換。其次,每個(gè)輕量級(jí)進(jìn)程都需要有一個(gè)內(nèi)核線(xiàn)程的支持,因此輕量級(jí)進(jìn)程要消耗一定的內(nèi)核資源(如內(nèi)核線(xiàn)程的棧空間),因此一個(gè)系統(tǒng)支持輕量級(jí)進(jìn)程的數(shù)量是有限的。5PH28資訊網(wǎng)——每日最新資訊28at.com

「使用用戶(hù)線(xiàn)程實(shí)現(xiàn)」:在用戶(hù)空間建立線(xiàn)程庫(kù),通過(guò)運(yùn)行時(shí)系統(tǒng)完成線(xiàn)程的管理。這種實(shí)現(xiàn)方式下,一個(gè)進(jìn)程和線(xiàn)程之間是一對(duì)多的關(guān)系。其優(yōu)點(diǎn)是線(xiàn)程切換快,并且可以運(yùn)行在任何操作系統(tǒng)之上,只需要實(shí)現(xiàn)線(xiàn)程庫(kù)即可。5PH28資訊網(wǎng)——每日最新資訊28at.com

這種實(shí)現(xiàn)方式下,一個(gè)進(jìn)程和線(xiàn)程之間的關(guān)系是一對(duì)多的。5PH28資訊網(wǎng)——每日最新資訊28at.com

這種線(xiàn)程實(shí)現(xiàn)方式的優(yōu)點(diǎn)是線(xiàn)程切換快,并且可以運(yùn)行在任何操作系統(tǒng)之上,只需要實(shí)現(xiàn)線(xiàn)程庫(kù)就行了。但是缺點(diǎn)也比較明顯,就是所有線(xiàn)程的操作都需要用戶(hù)程序自己處理,并且因?yàn)榇蠖鄶?shù)系統(tǒng)調(diào)用都是阻塞的,所以一旦一個(gè)進(jìn)程阻塞了,那么進(jìn)程中的所有線(xiàn)程也會(huì)被阻塞。還有就是多處理器系統(tǒng)中如何將線(xiàn)程映射到其他處理器上也是一個(gè)比較大的問(wèn)題。5PH28資訊網(wǎng)——每日最新資訊28at.com

「使用用戶(hù)線(xiàn)程加輕量級(jí)進(jìn)程混合實(shí)現(xiàn)」:這種實(shí)現(xiàn)方式結(jié)合了上述兩種方式的優(yōu)點(diǎn),既具有用戶(hù)線(xiàn)程實(shí)現(xiàn)方式的線(xiàn)程切換快的優(yōu)點(diǎn),也具有內(nèi)核線(xiàn)程實(shí)現(xiàn)方式的操作系統(tǒng)支持性好的優(yōu)點(diǎn)。5PH28資訊網(wǎng)——每日最新資訊28at.com

「Java線(xiàn)程的實(shí)現(xiàn)方式」Java作為一門(mén)跨平臺(tái)的編程語(yǔ)言,實(shí)際上他的線(xiàn)程的實(shí)現(xiàn)其實(shí)是依賴(lài)具體的操作系統(tǒng)的。而比較常用的windows和linux來(lái)說(shuō),都是采用內(nèi)核線(xiàn)程的方式實(shí)現(xiàn)的。也就是說(shuō),當(dāng)我們?cè)贘AVA代碼中創(chuàng)建一個(gè)Thread的時(shí)候,其實(shí)是需要映射到操作系統(tǒng)的線(xiàn)程的具體實(shí)現(xiàn)的,因?yàn)槌R?jiàn)的通過(guò)內(nèi)核線(xiàn)程實(shí)現(xiàn)的方式在創(chuàng)建、調(diào)度時(shí)都需要進(jìn)行內(nèi)核參與,所以成本比較高,盡管JAVA中提供了線(xiàn)程池的方式來(lái)避免重復(fù)創(chuàng)建線(xiàn)程,但是依舊有很大的優(yōu)化空間。而且這種實(shí)現(xiàn)方式意味著受機(jī)器資源的影響,平臺(tái)線(xiàn)程數(shù)也是有限制的。5PH28資訊網(wǎng)——每日最新資訊28at.com

虛擬線(xiàn)程

JDK19引入的虛擬線(xiàn)程,虛擬線(xiàn)程是輕量級(jí)線(xiàn)程,主要用于實(shí)現(xiàn)高吞吐量的并發(fā)應(yīng)用程序。與傳統(tǒng)的線(xiàn)程相比,虛擬線(xiàn)程具有更低的創(chuàng)建和銷(xiāo)毀成本,可以更好地利用系統(tǒng)資源。5PH28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片5PH28資訊網(wǎng)——每日最新資訊28at.com

虛擬線(xiàn)程的主要優(yōu)勢(shì):5PH28資訊網(wǎng)——每日最新資訊28at.com

  1. 高并發(fā)性:由于虛擬線(xiàn)程的創(chuàng)建和銷(xiāo)毀成本低,因此可以在短時(shí)間內(nèi)創(chuàng)建大量的虛擬線(xiàn)程,實(shí)現(xiàn)高并發(fā)處理。
  2. 資源利用率高:虛擬線(xiàn)程可以共享同一個(gè)進(jìn)程的資源,如內(nèi)存空間、文件描述符等,避免了資源的浪費(fèi),提高了系統(tǒng)的資源利用率。
  3. 易于管理和觀察:虛擬線(xiàn)程是輕量級(jí)的,其創(chuàng)建、切換和管理都更加簡(jiǎn)單和快速。此外,由于虛擬線(xiàn)程共享同一個(gè)進(jìn)程的資源,因此可以使用現(xiàn)有的工具和框架來(lái)觀察和管理虛擬線(xiàn)程。

「虛擬線(xiàn)程與平臺(tái)線(xiàn)程的區(qū)別」:5PH28資訊網(wǎng)——每日最新資訊28at.com

  1. 虛擬線(xiàn)程是守護(hù)線(xiàn)程,不能通過(guò)setDaemon(false)方法將其更改為非守護(hù)線(xiàn)程。當(dāng)所有啟動(dòng)的非守護(hù)進(jìn)程線(xiàn)程都終止時(shí),JVM將終止,這意味著JVM不會(huì)等待虛擬線(xiàn)程完成后才退出。
  2. 虛擬線(xiàn)程的優(yōu)先級(jí)始終為normal,并且不能通過(guò)setPriority()方法更改。在虛擬線(xiàn)程上調(diào)用此方法沒(méi)有效果。
  3. 虛擬線(xiàn)程不支持stop()、suspend()或resume()等方法。在虛擬線(xiàn)程上調(diào)用這些方法將拋出UnsupportedOperationException異常。
  4. 虛擬線(xiàn)程并不與特定的操作系統(tǒng)線(xiàn)程綁定,其與操作系統(tǒng)線(xiàn)程的映射關(guān)系比例也不是1:1,而是m:n。虛擬線(xiàn)程通常是由Java運(yùn)行時(shí)來(lái)調(diào)度的,而不是操作系統(tǒng)。當(dāng)在虛擬線(xiàn)程中運(yùn)行的代碼調(diào)用阻塞的I/O操作時(shí),Java運(yùn)行時(shí)會(huì)將虛擬線(xiàn)程掛起,直到其可以恢復(fù)為止。

「如何使用虛擬線(xiàn)程」:通過(guò)Thread.startVirtualThread()可以運(yùn)行一個(gè)虛擬線(xiàn)程:5PH28資訊網(wǎng)——每日最新資訊28at.com

Thread.startVirtualThread(() -> {    System.out.println("虛擬線(xiàn)程執(zhí)行中...");});

通過(guò)Thread.Builder也可以創(chuàng)建虛擬線(xiàn)程,Thread類(lèi)提供了ofPlatform()來(lái)創(chuàng)建一個(gè)平臺(tái)線(xiàn)程、ofVirtual()來(lái)創(chuàng)建虛擬現(xiàn)場(chǎng)。5PH28資訊網(wǎng)——每日最新資訊28at.com

Thread.Builder platformBuilder = Thread.ofPlatform().name("平臺(tái)線(xiàn)程");Thread.Builder virtualBuilder = Thread.ofVirtual().name("虛擬線(xiàn)程");Thread t1 = platformBuilder .start(() -> {...}); Thread t2 = virtualBuilder.start(() -> {...});

線(xiàn)程池也支持了虛擬線(xiàn)程,可以通過(guò)Executors.newVirtualThreadPerTaskExecutor()來(lái)創(chuàng)建虛擬線(xiàn)程:5PH28資訊網(wǎng)——每日最新資訊28at.com

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {    IntStream.range(0, 10000).forEach(i -> {        executor.submit(() -> {            Thread.sleep(Duration.ofSeconds(1));            return i;        });    });}

其實(shí)并不建議虛擬線(xiàn)程和線(xiàn)程池一起使用,因?yàn)镴ava線(xiàn)程池的設(shè)計(jì)是為了避免創(chuàng)建新的操作系統(tǒng)線(xiàn)程的開(kāi)銷(xiāo),但是創(chuàng)建虛擬線(xiàn)程的開(kāi)銷(xiāo)并不大,所以其實(shí)沒(méi)必要放到線(xiàn)程池中。5PH28資訊網(wǎng)——每日最新資訊28at.com

「性能差異」從Runnable創(chuàng)建10000個(gè)線(xiàn)程,并使用虛擬線(xiàn)程和平臺(tái)線(xiàn)程執(zhí)行它們,以比較兩者的性能。5PH28資訊網(wǎng)——每日最新資訊28at.com

final AtomicInteger atomicInteger = new AtomicInteger();Runnable runnable = () -> {  try {    Thread.sleep(Duration.ofSeconds(1));  } catch(Exception e) {      System.out.println(e);  }  System.out.println("Work Done - " + atomicInteger.incrementAndGet());};

傳統(tǒng)線(xiàn)程實(shí)現(xiàn):5PH28資訊網(wǎng)——每日最新資訊28at.com

Instant start = Instant.now();try (var executor = Executors.newFixedThreadPool(100)) {  for(int i = 0; i < 10_000; i++) {    executor.submit(runnable);  }}Instant finish = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis();  System.out.println("總耗時(shí) : " + timeElapsed);

虛擬線(xiàn)程實(shí)現(xiàn):5PH28資訊網(wǎng)——每日最新資訊28at.com

Instant start = Instant.now();try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {  for(int i = 0; i < 10_000; i++) {    executor.submit(runnable);  }}Instant finish = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis();  System.out.println("總耗時(shí) : " + timeElapsed);

最終結(jié)果:5PH28資訊網(wǎng)——每日最新資訊28at.com

總耗時(shí) : 102323總耗時(shí) : 1674

100秒和1.6秒的差距,虛擬線(xiàn)程的性能提升還是比較大的。5PH28資訊網(wǎng)——每日最新資訊28at.com

Java虛擬線(xiàn)程相對(duì)于傳統(tǒng)線(xiàn)程具有更好的性能表現(xiàn),特別是在高并發(fā)場(chǎng)景下。但是需要注意的是,虛擬線(xiàn)程并不是萬(wàn)能的,過(guò)度使用虛擬線(xiàn)程也可能會(huì)導(dǎo)致其他問(wèn)題,如線(xiàn)程數(shù)量過(guò)多、線(xiàn)程間通信和同步問(wèn)題等。5PH28資訊網(wǎng)——每日最新資訊28at.com


5PH28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-66350-0.htmlJDK19推出新特性虛擬線(xiàn)程是什么?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 微信 12 月打擊處理 3555 篇不實(shí)文章,十大謠言包括“網(wǎng)傳廣州限制外賣(mài)配送”

下一篇: 查電影評(píng)分上互聯(lián)網(wǎng)?別逗了!

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 一年經(jīng)驗(yàn)在二線(xiàn)城市面試后端的經(jīng)驗(yàn)分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗(yàn)、甚至沒(méi)有工作經(jīng)驗(yàn)的朋友閱讀。如果你是2年以上工作經(jīng)驗(yàn),請(qǐng)果斷劃走,對(duì)你沒(méi)啥幫助~主人公這篇文章內(nèi)容來(lái)自 「升職加薪」星球星友 的投稿,坐
  • 分享六款相見(jiàn)恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶(hù)提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個(gè)性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 得物效率前端微應(yīng)用推進(jìn)過(guò)程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴(kuò)大,越來(lái)越多的企業(yè)開(kāi)始意識(shí)到協(xié)作效率對(duì)于企業(yè)團(tuán)隊(duì)的重要性,甚至是決定其在某個(gè)行業(yè)競(jìng)爭(zhēng)中突圍的關(guān)鍵,是企業(yè)長(zhǎng)久生存的根本。得物
  • 量化指標(biāo)是與非:挽救被量化指標(biāo)扼殺的技術(shù)團(tuán)隊(duì)

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車(chē)技術(shù)總監(jiān)劉新翠在WOT2023大會(huì)上的主題分享,更多精彩內(nèi)容及現(xiàn)場(chǎng)PPT,請(qǐng)關(guān)注51CTO技術(shù)棧公眾號(hào),發(fā)消息【W(wǎng)OT2023PPT】即可直接領(lǐng)取
  • 梁柱接棒兩年,騰訊音樂(lè)闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱(chēng)由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營(yíng),這意味著騰訊音樂(lè)長(zhǎng)音頻業(yè)務(wù)走向消亡。騰訊在長(zhǎng)音頻領(lǐng)域還在摸索。為
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰(shuí)能笑到最后?

    作者:無(wú)銹缽來(lái)源:財(cái)經(jīng)無(wú)忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對(duì)的優(yōu)勢(shì)戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 網(wǎng)紅炒股不為了賺錢(qián),那就是耍流氓!

    來(lái)源:首席商業(yè)評(píng)論6月26日高調(diào)宣布入市,網(wǎng)絡(luò)名嘴大v胡錫進(jìn)居然進(jìn)軍了股市。在一次財(cái)經(jīng)媒體峰會(huì)上,幾個(gè)財(cái)經(jīng)圈媒體大佬就&ldquo;胡錫進(jìn)炒股是否知道認(rèn)真報(bào)道&rdquo;展開(kāi)討論。有
  • OPPO K11采用全方位護(hù)眼屏:三大護(hù)眼能力減輕視覺(jué)疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發(fā)布,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣(mài)點(diǎn)就是將配備索尼IMX890主攝,堪稱(chēng)是2000檔位影像表
  • 與兆芯合作 聯(lián)想推出全新旗艦版筆記本電腦開(kāi)天N7系列

    聯(lián)想與兆芯合作推出全新聯(lián)想旗艦版筆記本電腦開(kāi)天 N7系列。這個(gè)系列采用兆芯KX-6640MA處理器平臺(tái),KX-6640MA 處理器是采用了陸家嘴架構(gòu),16nm 工藝,4 核 4 線(xiàn)
Top