虛擬線程是在用戶空間(而非內核)中實現的輕量級線程,其創建、調度和銷毀由應用程序自己管理,而不依賴于操作系統。
傳統的線程(也稱為物理線程或內核線程)由操作系統內核調度和管理,每個線程都需要分配獨立的內存棧和寄存器上下文。這種線程調度的開銷較大,并且線程數量受限于操作系統的限制。
Java 虛擬線程使用的是用戶態線程實現,用戶態線程是由運行時庫實現的線程模型,應用程序可以在用戶空間中創建和管理多個線程,而無需涉及操作系統內核。
虛擬線程具有以下優點:
開發人員通常會將應用程序代碼從傳統的基于線程池的ExecutorService遷移到基于虛擬線程的ExecutorService。線程池就像其他資源池一樣,旨在共享昂貴的資源,但虛擬線程并不昂貴,因此無需對它們進行池化。
官方示例:
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10_000).forEach(i -> { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return i; }); });} // executor.close() is called implicitly, and waits
本文鏈接:http://www.tebozhan.com/showinfo-26-11826-0.html為什么Java官方不推薦池化虛擬線程?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 2023年前端流行什么技術和框架了?
下一篇: 防御性編碼的意識與實踐