成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDK21 性能提升 20 倍

開發(fā) 前端
經(jīng)過測試,在該例子中,Executors.newFixedThreadPool( size ); size的值越大,普通的線程池用時越短,在線程池的大小開放到 10000后,用時幾乎一樣。

大家好,我是了不起。

JDK21 發(fā)布已經(jīng)過去1個月時間了,除了每次發(fā)版必然更新的GC機制,和一些增強功能外,還引入了一個全新的概念——虛擬線程。

什么是虛擬線程

先來看一下官方對虛擬線程(Visual Threads)的描述(已翻譯):

如今,JDK中java.lang.Thread的每個實例都是一個平臺線程。平臺線程在底層操作系統(tǒng)線程上運行Java代碼,并在代碼的整個生命周期中捕獲操作系統(tǒng)線程。平臺線程的數(shù)量限制為操作系統(tǒng)線程的數(shù)量。

虛擬線程是java.lang.thread的一個實例,它在底層操作系統(tǒng)線程上運行java代碼,但在代碼的整個生命周期內(nèi)不會捕獲該操作系統(tǒng)線程。這意味著許多虛擬線程可以在同一個操作系統(tǒng)線程上運行Java代碼,從而有效地共享代碼。

雖然平臺線程獨占了寶貴的操作系統(tǒng)線程,但虛擬線程卻沒有。虛擬線程的數(shù)量可以比操作系統(tǒng)線程的數(shù)量大得多。

虛擬線程是JDK而不是OS提供的線程的輕量級實現(xiàn)。它們是用戶模式線程的一種形式,在其他多線程語言中也很成功(例如Go中的goroutines和Erlang中的processes)。用戶模式線程甚至在早期版本的Java中被稱為“綠色線程”,當時操作系統(tǒng)線程還不成熟和廣泛使用。然而,Java的綠色線程都共享一個操作系統(tǒng)線程(M:1調度),并且最終被平臺線程所超越,后者被實現(xiàn)為操作系統(tǒng)線程的包裝器(1:1調度)。虛擬線程采用M:N調度,其中大量(M)虛擬線程被調度在少量(N)OS線程上運行。

簡而言之,現(xiàn)在我們可以輕松地創(chuàng)建一個輕量級的虛擬線程,實現(xiàn)簡單性,同時充分發(fā)揮硬件性能。

可以概括為: 輕量、多路復用、開銷極小、異步編程、可移植性

測試

開始一個簡單的測試:1萬并發(fā)阻塞1秒模仿web連接池,使用Thread.sleep(1) 模擬IO操作需要的時間。

public static void main(String[] args) throws InterruptedException {
    long l = System.currentTimeMillis();
//    normal();
    virtual();
    System.out.println(System.currentTimeMillis() - l);
}

先使用常規(guī)線程池方式運行:

public static void normal() throws InterruptedException {
    ExecutorService executor = Executors.newFixedThreadPool(200);
    for (int i=0; i < 10000; i++) {
        executor.execute(() -> {
            try {
                System.out.println("normal");
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }
    executor.shutdown();
    executor.awaitTermination(100, java.util.concurrent.TimeUnit.SECONDS);
}

得到如下結果:

圖片圖片

使用 JDK21 虛擬線程池運行:

public static void virtual() throws InterruptedException {
    ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
    for (int i=0; i < 10000; i++) {
        executor.execute(() -> {
            try {
                System.out.println("jdk21");
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }
    executor.shutdown();
    executor.awaitTermination(100, java.util.concurrent.TimeUnit.SECONDS);
}

得到如下結果:

圖片圖片

20多倍的提速!!!

我不理解,但我大受震撼!!!

如果有朋友想自己測試一下虛擬線程,或者JDK21的其他新特性,可以嘗試一下哦~

JDK21 官網(wǎng)下載鏈接:https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_windows-x64_bin.zip

目前虛擬線程還屬于預覽版本,沒有正式啟用。如果是IDEA 開發(fā)工具,在啟動的時候,需要配置VM參數(shù) --enable-preview

圖片圖片

小結

經(jīng)過測試,在該例子中,Executors.newFixedThreadPool( size ); size的值越大,普通的線程池用時越短,在線程池的大小開放到 10000后,用時幾乎一樣。

應該是本例的IO操作是Thread.sleep的緣故,所以不會占用CPU資源。

傳統(tǒng)的線程池,一般我們會指定核心線程數(shù)量為 CPU核心數(shù)*4,最大線程數(shù)為 CPU核心數(shù)*8,而在虛擬線程池中,不需要指定線程數(shù),JDK會自動根據(jù)資源占用情況,創(chuàng)建合適數(shù)量的線程,追求更高的吞吐量。

聽說springboot3.2.0版本開始,springboot要把webflux底層也改成虛擬線程了,不知道以后會不會把所有的關于異步線程的地方都改成虛擬線程。

了不起是覺得這個虛擬線程真是個好東西,簡單易用,再也不糾結怎么配置線程池,根據(jù)硬件自適應,效率極高。

現(xiàn)在Spring6是基于JDK17的,不知道下個大版本更新會不會直接更新到有虛擬線程穩(wěn)定發(fā)布的JDK版本,期待!

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2024-06-06 16:15:00

2013-05-10 09:36:32

2023-12-28 10:49:27

響應式編程異步

2011-07-01 10:11:39

2023-11-03 18:23:34

虛擬線程服務器

2023-06-06 07:45:30

JDK21Java并發(fā)編程

2014-03-26 10:00:06

RailsRails性能

2024-10-29 08:21:05

2022-09-09 09:33:14

支付寶代碼性能

2014-04-01 09:52:46

MySQL

2023-09-26 12:16:29

JDK 21Java

2015-06-09 17:30:43

阿里云SSD盤

2020-07-22 08:30:02

代碼開發(fā)工具

2020-03-26 12:38:15

代碼節(jié)點數(shù)據(jù)

2025-05-27 01:55:00

TypeScript開發(fā)者項目

2020-07-21 15:40:55

NginxJava服務器

2021-02-02 15:38:19

Disruptor緩存Java

2024-04-07 08:50:00

谷歌框架

2024-01-09 12:58:21

PC性能NVIDIA

2014-04-10 11:27:30

DartDart SDK
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合在线观看 | 精品国产欧美 | 免费精品视频 | 福利网址 | 先锋资源站 | 97国产爽爽爽久久久 | 欧美成人精品在线 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 欧美日韩成人在线 | 中文字幕一区二区三区日韩精品 | 91九色在线观看 | 国产一区高清 | 国产成人免费一区二区60岁 | 亚洲高清一区二区三区 | 国产综合在线视频 | 男女网站在线观看 | 日韩视频在线免费观看 | 亚洲成人久久久 | 国产一区2区 | 日本a级大片 | 久久成人精品视频 | 91视频.com | 在线观看视频一区二区三区 | 国产精品一区久久久 | 中文字幕免费 | 99资源站 | 草久久| www.4虎影院 国产999精品久久久影片官网 | 激情av免费看 | 性福视频在线观看 | 欧美日韩国产一区二区 | 狠狠色综合久久丁香婷婷 | 国产精品自在线 | 超碰婷婷 | 亚洲天堂一区二区 | 日韩久久久久久久久久久 | 超碰欧美| 日韩快播电影 | 国内91在线 | 亚洲视频网 | 91久久国产综合久久 |