Java新提案:Extent-Local變數

banq發表於2022-08-03

Extent-Local 被提議作為一種線上程之間共享資料的新方式,它比 ThreadLocals 更輕量、更不可變,它包含更不容易出錯的語法,並且與虛擬執行緒很好地配合使用。

目標
  • 易用性——提供一種線上程內和與子執行緒共享資料的程式設計模型,以簡化對資料流的推理。
  • 可理解性——使共享資料的生命週期從程式碼的句法結構中可見。
  • 魯棒性——確保呼叫者共享的資料只能由合法的被呼叫者檢索。
  • 效能——將共享資料視為不可變的,以便允許大量執行緒共享,並啟用執行時最佳化。


在虛擬執行緒程式設計中,執行緒區域性變數比共享資料通常所需的複雜性更高,而且成本高昂且無法避免。如果 Java 平臺提供了一種方法,可以為數千或數百萬個虛擬執行緒提供不可變的每個執行緒資料,並且考慮到分叉虛擬執行緒的低成本,那麼這將是理想的。因為這些每個執行緒的變數是不可變的,所以它們的資料可以被子執行緒有效地共享。此外,這些每個執行緒變數的生命週期應該是有限的:一旦最初共享資料的方法完成,透過每個執行緒變數共享的任何資料都應該變得不可用。
詳細點選標題



 

相關文章