Project Loom的使用者模式執行緒或協程的效能是否一定很好? - Dukesletter
Project Loom繼續前進,並引起了討論:使用者模式執行緒如何提供比OS執行緒更好的應用程式效能?
OpenJDK的Project Loom的技術主管Ron Pressler在“ 關於使用者模式執行緒和協程的效能 ”中回答了這個問題。
本文不是技術性文章,也不涉及實施細節。Ron 使用排隊論和利特爾定律解釋說,儘管虛擬執行緒中的任務切換成本比OS執行緒中的成本低,但真正的收益在於能夠增加執行實際工作的程式數量,同時降低其成本(我們可以有更多執行緒而消耗很少的資源)。
這個想法很重要,它將幫助我們更好地理解: Project Loom是否會廢除Java Futures?
Java 15將釋出Project Loom的第一個版本,Project Loom在Reactive模型正規化中的影響:“ 對Project Loom,Reactive模型和協程 ”:
- Reactive模型和Kotlin協程都在客戶端程式碼和JVM執行緒之間新增了一個額外的抽象層。框架/庫的職責是動態地將一個對映到另一個。問題的關鍵在於,JVM執行緒是OS執行緒的薄包裝:請記住,OS執行緒建立起來很昂貴,並且數量限制在數千個之內。
- Project Loom的目標是實際上將JVM執行緒與OS執行緒解耦。其中一個想法是建立一個額外的抽象,稱為Fiber
- 但是,java15並沒有引入新的Fiber類,而是重用了Java開發人員非常熟悉的一個類- java.lang.Thread!因此,在新的JVM版本中,某些Thread物件可能是重量級的並對映到OS執行緒,而另一些物件可能是虛擬執行緒。
- Project Looms將現有的Thread實現方式從OS執行緒的對映更改為可以表示此類執行緒或虛擬執行緒的抽象。就其本身而言,這是一個有趣的舉動,它在一個平臺上歷來比創新更重視向後相容性。與其他最新的Java版本相比,此功能是真正的遊戲規則改變者。一般而言,開發人員應儘快開始熟悉它。打算學習Reactive和協程的開發人員可能應該退後延遲一步。
相關文章
- Java 18中啟動Project Loom數百萬執行緒JavaProjectOOM執行緒
- project-loom-c5m:用Project Loom虛擬執行緒實現500萬長連線的實驗ProjectOOM執行緒
- 程式、執行緒和協程的概念執行緒
- 程序、執行緒、協程的區別執行緒
- 執行緒 、程式、協程的基本使用執行緒
- 程序 執行緒 協程執行緒
- 程式,核心執行緒,使用者執行緒,協程,纖程......作業系統世界觀執行緒作業系統
- Loom會造成CPU密集型執行緒的不公平排程OOM執行緒
- 【unity】 Loom實現多執行緒UnityOOM執行緒
- 目前對程式、執行緒、協程的理解執行緒
- 協程、執行緒與程式執行緒
- 使用Loom建立虛擬執行緒 - davidOOM執行緒
- 程式執行緒協程關係執行緒
- 執行緒池建立執行緒的過程執行緒
- 32. 執行緒、程序與協程執行緒
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- Java執行緒的排程Java執行緒
- 什麼是程式、執行緒和協程?執行緒
- 模擬主執行緒等待子執行緒的過程執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- swoole 當中協程的理解包括(程式、執行緒的講解)執行緒
- 對程式、執行緒和協程的理解以及它們的區別執行緒
- 程序中的執行緒排程執行緒
- javascript執行緒及與執行緒有關的效能優化JavaScript執行緒優化
- 基於多執行緒+協程的非同步增量式爬蟲執行緒非同步爬蟲
- 對執行緒、協程和同步非同步、阻塞非阻塞的理解執行緒非同步
- ConcurrentHashMap一定執行緒安全?HashMap執行緒
- 使用JDK16支援的Loom虛擬執行緒的代價 – WebtideJDKOOM執行緒WebIDE
- libgo原始碼分析之多執行緒協程管理和排程Go原始碼執行緒
- 執行緒、協成執行緒
- 手撕Java多執行緒(四)執行緒之間的協作Java執行緒
- Project Loom搶先體驗版ProjectOOM
- 執行緒數,512是否合理?執行緒
- 執行緒間的協作機制執行緒
- 位元組一面:go的協程相比執行緒,輕量在哪?Go執行緒
- Java 多執行緒(Java.Thread)------ 執行緒協作(生產者消費者模式)Java執行緒thread模式
- java執行緒之守護執行緒和使用者執行緒Java執行緒
- 多執行緒的補充 獲取一定時間的執行結果執行緒