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

面試官:什么是虛擬線程?為什么要有虛擬線程?

開發 前端
Java 中的虛擬線程,也叫做協程或“輕量級線程”,它誕生于 JDK 19(預覽 API),正式發布于 JDK 21,它是一種在 Java 虛擬機(JVM)層面實現的邏輯線程,不直接和操作系統的物理線程一一對應,因此它可以減少上下文切換所帶來的性能開銷。

Java 中的虛擬線程,也叫做協程或“輕量級線程”,它誕生于 JDK 19(預覽 API),正式發布于 JDK 21,它是一種在 Java 虛擬機(JVM)層面實現的邏輯線程,不直接和操作系統的物理線程一一對應,因此它可以減少上下文切換所帶來的性能開銷。

操作系統線程、普通線程(Java 線程)和虛擬線程的關系如下:

圖片圖片

虛擬線程使用

虛擬線程的創建方式,主要有以下 4 種:

  1. Thread.startVirtualThread(Runnable task)
  2. Thread.ofVirtual().unstarted(Runnable task)
  3. Thread.ofVirtual().factory()
  4. Executors.newVirtualThreadPerTaskExecutor()

具體示例如下。

1.startVirtualThread

創建虛擬線程,并直接啟動執行任務:

// 創建并啟動虛擬線程
Thread.startVirtualThread(() -> {
    System.out.println("Do virtual thread.");
});

2.unstarted

只創建虛擬線程,但不直接啟動:

// 創建虛擬線程
Thread vt = Thread.ofVirtual().unstarted(()->{
    System.out.println("Do virtual thread.");
});
// 運行虛擬線程
vt.start();

3.factory

先創建虛擬線程工廠,然后再使用工廠創建虛擬線程,之后再調用 start() 方法進行執行:

// 創建虛擬線程工廠
ThreadFactory tf = Thread.ofVirtual().factory();
// 創建虛擬線程
Thread vt = tf.newThread(()->{
    System.out.println("Do virtual thread.");
});
// 運行虛擬線程
vt.start();

4.newVirtualThreadPerTaskExecutor

使用線程池的方式創建虛擬線程:

// 創建一個支持虛擬線程的線程池
ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor();
executor.submit(()->{
    System.out.println("Do virtual thread.");
});

虛擬線程 VS 普通線程

虛擬線程和普通線程的區別主要體現在以下幾點:

  1. 普通線程是和操作系統的物理線程是一一對應的,而虛擬線程是 JVM 層面的邏輯線程,并不和操作系統的物理線程一一對應,它可以看作是輕量級的線程。
  2. 普通線程默認創建的是用戶線程(而守護線程),而虛擬線程是守護線程,并且其守護線程的屬性不能被修改,如果修改就會報錯,如下圖所示:

圖片圖片

  1. 虛擬線程由 JVM 調度和使用,避免了普通線程頻繁切換的性能開銷,所以相比于普通的線程來說,運行效率更高。

小結

線程是輕量級的進程,而虛擬線程則是輕量級的線程,虛擬線程是 JVM 層面實現的邏輯線程,不直接和操作系統的物理線程一一對應,因此使用它可以減少線程上下文切換所帶來的性能開銷。它和普通線程的線程類型也不同,普通線程是默認是用戶線程類型,而虛擬線程則是守護線程(而且不能被修改)。

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2022-07-06 13:48:24

RedisSentinel機制

2025-02-21 15:25:54

虛擬線程輕量級

2023-12-06 09:10:28

JWT微服務

2021-02-19 10:02:57

HTTPSJava安全

2020-12-23 13:29:15

微服務架構面試官

2021-09-07 10:44:33

Java 注解開發

2024-11-06 12:59:42

多線程銷毀線程切換

2024-02-04 10:29:58

線程通信

2021-12-28 09:50:18

Redis單線程高并發

2022-01-24 07:01:20

安全多線程版本

2024-02-22 15:36:23

Java內存模型線程

2021-12-08 06:53:29

面試動態代理

2022-09-29 07:30:57

數據庫索引字段

2024-01-11 08:12:20

重量級監視器

2023-11-03 12:29:48

Java虛擬線程

2020-10-24 15:50:54

Java值傳遞代碼

2023-09-27 23:03:01

Java虛擬線程

2022-03-02 07:36:37

池化技術Java線程池

2021-01-21 07:53:29

面試官Promis打印e

2024-09-11 22:51:19

線程通訊Object
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操欧美 | 精品一区二区三区不卡 | aaaaaaa片毛片免费观看 | 国产激情精品视频 | 日韩精品一区二区三区 | 婷婷综合久久 | 成人精品国产一区二区4080 | 日韩中出 | 99久久婷婷国产综合精品电影 | 久久久www成人免费精品 | 99综合| 成人不卡 | 中文字幕在线一区二区三区 | 亚洲成人av在线播放 | 日日干日日操 | 亚洲福利av | 欧美日本久久 | 亚洲一区二区在线播放 | 亚洲国产精品一区二区三区 | 高清一区二区三区 | 亚洲欧美日韩电影 | 国产精品久久久久久模特 | 国产精品久久久久久久久婷婷 | 国产99久久久国产精品 | 91精品国产一区二区三区 | 久久国内精品 | 国产不卡一区 | 欧美日韩国产在线观看 | 久久久久精 | 亚洲精品久久久一区二区三区 | 日韩视频精品在线 | 国产精品久久a | 久久久久久免费看 | 久夜精品 | 91国内精品| 99热这里都是精品 | 国产视频精品在线 | 国产精品视频网站 | 亚洲一区欧美 | 麻豆一区二区三区 | 久久久久久久久久久久91 |