国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 21 新特性:虛擬線程(Virtual Threads)

這篇具有很好參考價值的文章主要介紹了Java 21 新特性:虛擬線程(Virtual Threads)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在Java 21中,引入了虛擬線程(Virtual Threads)來簡化和增強并發(fā)性,這使得在Java中編程并發(fā)程序更容易、更高效。

虛擬線程,也稱為“用戶模式線程(user-mode threads)”或“纖程(fibers)”。該功能旨在簡化并發(fā)編程并提供更好的可擴展性。虛擬線程是輕量級的,這意味著它們可以比傳統(tǒng)線程創(chuàng)建更多數(shù)量,并且開銷要少得多。這使得在自己的線程中運行單獨任務(wù)或請求變得更加實用,即使在高吞吐量的程序中也是如此。

創(chuàng)建和使用虛擬線程

在Java 21中創(chuàng)建和使用虛擬線程有多種方法:

1. 使用靜態(tài)構(gòu)建器方法

Thread.startVirtualThread方法將可運行對象作為參數(shù)來創(chuàng)建,并立即啟動虛擬線程,具體如下代碼:

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

// 使用靜態(tài)構(gòu)建器方法
Thread virtualThread = Thread.startVirtualThread(runnable);

也可以使用Thread.ofVirtual()來創(chuàng)建,這里還可以設(shè)置一些屬性,比如:線程名稱。具體如下代碼:

Thread.ofVirtual()
        .name("didispace-virtual-thread")
        .start(runnable);

2. 與ExecutorService結(jié)合使用

從Java 5開始,就推薦開發(fā)人員使用ExecutorServices而不是直接使用Thread類了。現(xiàn)在,Java 21中引入了使用虛擬線程,所以也有了新的ExecutorService來適配,看看下面的例子:

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

try (ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor()) {
    for (int i = 0; i < 100; i++) {
        executorService.submit(runnable);
    }
}

上述代碼在try代碼塊中創(chuàng)建了一個ExecutorServices,用來為每個提交的任務(wù)創(chuàng)建虛擬線程。

3. 使用虛擬線程工廠

開發(fā)者還可以創(chuàng)建一個生成虛擬線程的工廠來管理,具體看下面的例子例子:

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

ThreadFactory virtualThreadFactory = Thread.ofVirtual()
        .name("didispace", 0)
        .factory();

Thread factoryThread = virtualThreadFactory.newThread(runnable);
factoryThread.start;

這段代碼創(chuàng)建了一個虛擬線程工廠,每個虛擬線程都會以didispace為前綴、以數(shù)字結(jié)尾(從0開始累加)的名稱。

小結(jié)

上面我們介紹了虛擬線程的創(chuàng)建和使用,而我們大多數(shù)Java開發(fā)者都基于Spring來開發(fā)具體業(yè)務(wù)應(yīng)用,所以很多場景下可能都不太涉及手工創(chuàng)建的操作。所以,對于虛擬線程的概念,你只需要有一個基本的認(rèn)識。所以,在文章的最后,做一個小結(jié),以方便大家理解和記憶:

  • 虛擬線程是由JVM管理的輕量級線程。
  • 虛擬線程不需要任何顯式分配或調(diào)度。
  • 虛擬線程非常適合I/O密集型任務(wù)或需要大量并行性的任務(wù)。
  • 虛擬線程也可以用來實現(xiàn)異步操作。

另外,值得注意的是,雖然虛擬線程可以在并發(fā)性和可擴展性方面提供顯著的幫助,但它們并不總是適合所有場景。有些需要大量計算的任務(wù),并不一定在虛擬線程中運行更好,因為虛擬線程也有上下文切換的開。具體情況還是需要通過測試評測,以找到最優(yōu)解。

如果您學(xué)習(xí)過程中如遇困難?可以加入我們超高質(zhì)量的技術(shù)交流群,參與交流與討論,更好的學(xué)習(xí)與進步!另外,不要走開,關(guān)注我!持續(xù)更新Java新特性專欄!

參考資料

  • Java 21:JEP444-Virtual-Threads
  • Spring Boot虛擬線程與Webflux在JWT驗證和MySQL查詢上的性能比較

歡迎關(guān)注我的公眾號:程序猿DD。第一時間了解前沿行業(yè)消息、分享深度技術(shù)干貨、獲取優(yōu)質(zhì)學(xué)習(xí)資源文章來源地址http://www.zghlxwxcb.cn/news/detail-712028.html

到了這里,關(guān)于Java 21 新特性:虛擬線程(Virtual Threads)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java21虛擬線程實踐

    ??就在前幾天,java21正式版發(fā)布了,作為繼java17之后的又一個長期支持版本 (LTS),為我們帶來了很多新的特性,其中我最感興趣的就是虛擬線程(virtual thread),相信大家對虛擬線程也很好奇。趁著空閑時間安裝了jdk21來體驗一把,順便把我查到的關(guān)于java21虛擬線程相關(guān)的資料

    2024年02月08日
    瀏覽(26)
  • Java 21 虛擬線程:使用指南(一)

    Java 21 虛擬線程:使用指南(一)

    虛擬線程是由 Java 21 版本中實現(xiàn)的一種輕量級線程。它由 JVM 進行創(chuàng)建以及管理。虛擬線程和傳統(tǒng)線程(我們稱之為平臺線程)之間的主要區(qū)別在于,我們可以輕松地在一個 Java 程序中運行大量、甚至數(shù)百萬個虛擬線程。 由于虛擬線程的數(shù)量眾多,也就賦予了 Java 程序強大的

    2024年02月04日
    瀏覽(21)
  • Java 21 正式 GA,虛擬線程真的來了

    UTC 時間 2023 年 9 月 19 日,期盼已久的 Java 21 終于發(fā)布正式版! 本文一起來看看其中最受 Java 開發(fā)者關(guān)注的一項新特性:Loom 項目的兩個新特性之一的 ”虛擬線程(Virtual Thread)“(另外一個新特性是 ”結(jié)構(gòu)化并發(fā)(Structured Concurrency)“,當(dāng)前是預(yù)覽狀態(tài)),它被稱之為 J

    2024年02月08日
    瀏覽(22)
  • Java21上手體驗-分代ZGC和虛擬線程

    幾天前Oracle剛剛發(fā)布了Java21, 由于這是最新的LTS版本,引起了大家的關(guān)注。 我也第一時間在個人項目中進行了升級體驗。 一探究竟,和大家分享。 https://jdk.java.net/21/release-notes https://my.oschina.net/waylau/blog/10112170 JEP 431:序列集合 JEP 439:分代 ZGC JEP 440:記錄模式 JEP 441:switc

    2024年02月08日
    瀏覽(22)
  • Java 21 虛擬線程如何限流控制吞吐量

    虛擬線程(Virtual Threads)是 Java 21 所有新特性中最為吸引人的內(nèi)容,它可以大大來簡化和增強Java應(yīng)用的并發(fā)性。但是,隨著這些變化而來的是如何最好地管理此吞吐量的問題。本文,就讓我們看一下開發(fā)人員在使用虛擬線程時,應(yīng)該如何管理吞吐量。 在大多數(shù)情況下,開發(fā)

    2024年02月20日
    瀏覽(15)
  • Java21對虛擬線程進行http壓測使用不同的GC

    Java21對虛擬線程進行http壓測使用不同的GC

    JDK21默認(rèn)GC是G1. JDK21除了G1外,還可以使用ZGC(Java11預(yù)覽、Java15正式版),Java21在ZGC基礎(chǔ)上繼續(xù)推出了分代ZGC,目前還是試行階段。 開啟ZGC: java -XX:+UseZGC -jar myapp.jar 開啟ZGC,并試用分代ZGC java -XX:+UseZGC -XX:+ZGenerational -jar myapp.jar 以下的對一個啟用tomcat虛擬線程的spring boot 項目

    2024年02月05日
    瀏覽(24)
  • 【JDK21】詳解虛擬線程

    【JDK21】詳解虛擬線程

    目錄 1.概述 2.虛擬線程是為了解決哪些問題 2.1.線程切換的巨大代價 2.2.哪些情況會造成線程的切換 2.3.線程資源是有限的 3.虛擬線程 4.適用場景 你發(fā)任你發(fā),我用JAVA8?JDK21可能要對這句話say no了。 現(xiàn)在Oracle JDK是每4個版本,推出一個長期支持版本,JDK21就是前段時間發(fā)布的最

    2024年02月05日
    瀏覽(20)
  • jdk21 虛擬線程原理及使用分享

    jdk21 虛擬線程原理及使用分享

    jdk21已于北京時間9月19日21點正式發(fā)布, 其中引人注目的就是虛擬線程(Virtual Thread)隨之正式發(fā)布, 不再是此前jdk19、jdk20中的預(yù)覽版本。 平臺線程 :java傳統(tǒng)的線程是對系統(tǒng)線程的包裝,為了區(qū)別于虛擬線程,因此將通過傳統(tǒng)方式實現(xiàn)的線程叫做平臺線程(Platform Thread) 虛擬線程

    2024年02月04日
    瀏覽(27)
  • JDK21最終版協(xié)程實現(xiàn)之虛擬線程

    JDK21最終版協(xié)程實現(xiàn)之虛擬線程

    JDK9 后的版本你覺得沒必要折騰,我也認(rèn)可,但是JDK21有必要關(guān)注。因為 JDK21 引入全新的并發(fā)編程模式。 一直沽名釣譽的GoLang吹得最厲害的就是協(xié)程了。JDK21 中就在這方面做了很大的改進,讓Java并發(fā)編程變得更簡單一點,更絲滑一點。 之前寫過JDK21 Feature。 Virtual Threads 、

    2024年02月08日
    瀏覽(24)
  • 聊聊JDK19特性之虛擬線程

    在讀《深入理解JVM虛擬機》這本書前兩章的時候整理了JDK從1.0到最新版本發(fā)展史,其中記錄了JDK這么多年來演進過程中的一些趣聞及引人注目的一些特性,在調(diào)研JDK19新增特性的時候了解到了虛擬線程這個概念,于是對虛擬線程進行學(xué)習(xí)整理內(nèi)容如下。 虛擬線程(Virtual Thread

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包