1.新版 Loom EA 改進虛擬線程中的監視器(同步方法)
Project Loom 發布了新的搶先體驗版本(23-loom+4-102 - 2024/5/31)。改進了對象監視器實現,可以防止虛擬線程在以下情況下固定其載體線程:
- 當進入同步方法/語句時發生阻塞,因為該對象的關聯監視器由另一個線程持有
- 在同步方法中停止時(例如,執行套接字 I/O 時)
- Object.wait在同步方法中調用時
具體如下圖示例所示:
2.聲明
Object.wait/timed-的變化wait是自上次 Loom EA 版本以來的主要變化。
Loom 團隊正在尋求幫助來測試這些更改,即使用已知使用虛擬線程的代碼和“高度同步”的庫來嘗試這些版本。主要目標是衡量可靠性和性能。現在重點是功能性和可靠性。請注意,在某些情況下,性能尚未完全與 juconcurrent 鎖和條件對象上的阻塞相提并論。
與以前一樣,JFR 事件可用于識別類初始化程序中的剩余固定、停放或阻塞情況。過去jdk.tracePinnedThreads用于在線程固定時打印堆棧跟蹤的系統屬性,現在不再輸出任何內容。