1. gzyueqian
      13352868059

      Java培訓:虛擬線程——大規模Java應用程序的新基礎

      更新時間: 2022-10-12 11:45:23來源: 粵嵌教育瀏覽量:9820

        Java19為Java平臺帶來了虛擬線程的第一個預覽,這是OpenJDKs Project Loom的主要可交付成果,這是很長一段時間以來Java發生的最大變化之一——同時也是幾乎無法察覺的變化。想學習java的同學,可以參加Java培訓,可以在短時間內獲得快速提升。

        虛擬線程從根本上改變了Java運行時與底層操作系統的交互方式,消除了可伸縮性的重大障礙——但對于我們如何構建和維護并發程序的改變相對較小。新的 API 表面幾乎為零,虛擬線程的行為幾乎與我們已知的線程完全相同。

        虛擬線程

        虛擬線程是Java.lang.Thread 的一種替代實現,它將它們的堆棧幀存儲在Java垃圾收集堆中,而不是操作系統分配的單片內存塊中。我們不必猜測一個線程可能需要多少堆棧空間,或者對所有線程進行一刀切的估計;虛擬線程的內存占用開始時只有幾百字節,并隨著調用堆棧的擴展和收縮而自動擴展和收縮。

        操作系統只知道平臺線程,它仍然是調度單元。為了在虛擬線程中運行代碼,Java運行時通過將其安裝在某個平臺線程(稱為載體線程)上來安排它運行。掛載虛擬線程意味著將所需的堆棧幀從堆中臨時復制到載體線程的堆棧中,并在掛載時借用載體堆棧。想學習有關java的更多技能,不妨報個java培訓班,這是快速掌握java技能的有效方法,可以讓你少走很多彎路。

        當在虛擬線程中運行的代碼會因 IO、鎖定或其他資源可用性而阻塞時,它可以從載體線程中卸載,并且復制的任何修改的堆棧幀都將返回到堆中,從而釋放載體線程以進行其他操作(例如就像運行另一個虛擬線程一樣。)JDK 中幾乎所有的阻塞點都已經過調整,因此當在虛擬線程上遇到阻塞操作時,虛擬線程會從其載體上卸載而不是阻塞。

        


        在載體線程上掛載和卸載虛擬線程是Java代碼完全不可見的實現細節。Java代碼無法觀察到當前載體的身份(調用Thread::currentThread總是返回虛擬線程);承載線程的 ThreadLocal 值對已掛載的虛擬線程不可見;載體的堆棧幀不會出現在虛擬線程的異常或線程轉儲中。在虛擬線程的生命周期中,它可能在許多不同的載體線程上運行,但是任何取決于線程標識的東西,例如鎖定,都會看到它在哪個線程上運行的一致畫面。在java培訓中,有系統全面的理論知識和企業級實戰項目,可以讓你真正掌握java知識和技能,更好地進行項目開發。

        虛擬線程之所以如此命名,是因為它們與虛擬內存共享特性。使用虛擬內存,應用程序會產生一種錯覺,即他們可以訪問整個內存地址空間,而不受可用物理內存的限制。硬件通過根據需要將豐富的虛擬內存臨時映射到稀缺的物理內存來完成這種錯覺,當其他一些虛擬頁面需要該物理內存時,舊的內容首先被分頁到磁盤。同樣,虛擬線程既便宜又豐富,根據需要共享稀缺和昂貴的平臺線程,不活動的虛擬線程堆棧被“分頁”到堆中。

        虛擬線程具有相對較少的新 API 表面。有幾種創建虛擬線程的新方法(例如,Thread::ofVirtual),但創建后,它們是普通的 Thread 對象,并且表現得像我們已經知道的線程。現有的 API,如 Thread::currentThread、ThreadLocal、中斷、堆棧遍歷等,在虛擬線程上的工作方式與在平臺線程上的工作方式完全相同,這意味著我們可以自信地在虛擬線程上運行現有代碼。在java培訓中,有系統全面的理論知識和企業級實戰項目,可以讓你真正掌握java知識和技能,更好地進行項目開發。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲中文在线视频 | 亚洲欧美久久综合网站点击 | 中文字幕亚洲综合久久2 | 亚洲午夜福利在线观看 | 在线视频制服丝袜中文字幕 | 三级中文亚洲精品字幕 |