日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

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

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

操作系統線程、普通線程(Java 線程)和虛擬線程的關系如下:J7j28資訊網——每日最新資訊28at.com

圖片圖片J7j28資訊網——每日最新資訊28at.com

虛擬線程使用

虛擬線程的創建方式,主要有以下 4 種:J7j28資訊網——每日最新資訊28at.com

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

具體示例如下。J7j28資訊網——每日最新資訊28at.com

1.startVirtualThread

創建虛擬線程,并直接啟動執行任務:J7j28資訊網——每日最新資訊28at.com

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

2.unstarted

只創建虛擬線程,但不直接啟動:J7j28資訊網——每日最新資訊28at.com

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

3.factory

先創建虛擬線程工廠,然后再使用工廠創建虛擬線程,之后再調用 start() 方法進行執行:J7j28資訊網——每日最新資訊28at.com

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

4.newVirtualThreadPerTaskExecutor

使用線程池的方式創建虛擬線程:J7j28資訊網——每日最新資訊28at.com

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

虛擬線程 VS 普通線程

虛擬線程和普通線程的區別主要體現在以下幾點:J7j28資訊網——每日最新資訊28at.com

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

圖片圖片J7j28資訊網——每日最新資訊28at.com

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

小結

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

本文鏈接:http://www.www897cc.com/showinfo-26-50757-0.html面試官:什么是虛擬線程?為什么要有虛擬線程?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: CORS 跨域工作機制與安全防范

下一篇: SpringBoot中如何優雅地個性化定制Jackson

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 渭南市| 台安县| 庆阳市| 七台河市| 康保县| 横峰县| 镇宁| 友谊县| 台东市| 阳东县| 平乡县| 福海县| 咸宁市| 呼图壁县| 上杭县| 会宁县| 怀集县| 吉木萨尔县| 呼伦贝尔市| 琼中| 仙桃市| 东平县| 田阳县| 禄丰县| 安国市| 时尚| 枣阳市| 陇川县| 江油市| 四川省| 汉阴县| 麻栗坡县| 揭东县| 孝感市| 历史| 昌吉市| 广宁县| 灵台县| 肇东市| 青海省| 远安县|