日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JDK19推出新特性虛擬線程是什么?

來源: 責編: 時間:2024-01-23 08:43:34 318觀看
導讀JDK19推出了幾個新的特性,其中最具有特點的有以下幾個。圖片記錄模式(預覽版):使用記錄模式增強Java編程語言以解構記錄值,可以嵌套記錄模式和類型模式,實現強大的、聲明性的和可組合的數據導航和處理形式。這是一個預覽語

JDK19推出了幾個新的特性,其中最具有特點的有以下幾個。BxL28資訊網——每日最新資訊28at.com

圖片圖片BxL28資訊網——每日最新資訊28at.com

  1. 記錄模式(預覽版):使用記錄模式增強Java編程語言以解構記錄值,可以嵌套記錄模式和類型模式,實現強大的、聲明性的和可組合的數據導航和處理形式。這是一個預覽語言功能。
  2. Linux/RISC-V移植:將JDK移植到Linux/RISC-V,目前僅支持RISC-V的RV64GV配置(包含向量指令的通用64位ISA)。將來可能會考慮支持其他RISC-V配置,例如通用32位配置(RV32G)。
  3. 外部函數和內存API(預覽版):引入一個API,Java程序可以通過該API與Java運行時之外的代碼和數據進行互操作。這是一個預覽版API。
  4. 虛擬線程(預覽版):將虛擬線程引入Java平臺。虛擬線程是輕量級線程,可顯著地減少編寫、維護和觀察高吞吐量并發應用程序的工作量。
  5. 結構化并發(培養階段):旨在通過結構化并發API簡化多線程編程。這種并發性將在不同線程中運行的多個任務視為單個工作單元,以簡化錯誤處理和取消,提高了可靠性和可觀察性。這個特性來自Project Loom,它引入了一個新的輕量級并發模型。

我們看到其中有一個比較值得關注的那就是新增了虛擬線程。到底什么是虛擬線程,和我們現在使用的線程有啥區別呢?BxL28資訊網——每日最新資訊28at.com

線程的實現方式

在操作系統中,線程是比進程更輕量級的調度執行單位,線程的引入可以把一個進程的資源分配和執行調度分開,各個線程既可以共享進程資源,又可以獨立調度。BxL28資訊網——每日最新資訊28at.com

線程的實現方式主要有三種:分別是使用內核線程實現、使用用戶線程實現以及使用用戶線程加輕量級進程混合實現。BxL28資訊網——每日最新資訊28at.com

「使用內核線程實現」:內核線程(Kernel-Level Thread,KLT)直接由操作系統內核支持,由內核完成線程切換,內核通過操縱調度器對線程進行調度,并負責將線程的任務映射到各個處理器上,同時向應用程序提供API接口來管理線程。應用程序一般不直接使用內核線程,而是使用內核線程的一種高級接口——輕量級進程(Light Weight Process,LWP)。BxL28資訊網——每日最新資訊28at.com

應用程序一般不會直接去使用內核線程,而是去使用內核線程的一種高級接口——輕量級進程(Light Weight Process,LWP),輕量級進程就是我們通常意義上所講的線程,由于每個輕量級進程都由一個內核線程支持,因此只有先支持內核線程,才能有輕量級進程。BxL28資訊網——每日最新資訊28at.com

有了內核線程的支持,每個輕量級進程都成為一個獨立的調度單元,即使有一個輕量級進程在系統調用中阻塞了,也不會影響整個進程繼續工作。BxL28資訊網——每日最新資訊28at.com

但是輕量級進程具有它的局限性:首先,由于是基于內核線程實現的,所以各種線程操作,如創建、析構及同步,都需要進行系統調用。而系統調用的代價相對較高,需要在用戶態(User Mode)和內核態(Kernel Mode)中來回切換。其次,每個輕量級進程都需要有一個內核線程的支持,因此輕量級進程要消耗一定的內核資源(如內核線程的棧空間),因此一個系統支持輕量級進程的數量是有限的。BxL28資訊網——每日最新資訊28at.com

「使用用戶線程實現」:在用戶空間建立線程庫,通過運行時系統完成線程的管理。這種實現方式下,一個進程和線程之間是一對多的關系。其優點是線程切換快,并且可以運行在任何操作系統之上,只需要實現線程庫即可。BxL28資訊網——每日最新資訊28at.com

這種實現方式下,一個進程和線程之間的關系是一對多的。BxL28資訊網——每日最新資訊28at.com

這種線程實現方式的優點是線程切換快,并且可以運行在任何操作系統之上,只需要實現線程庫就行了。但是缺點也比較明顯,就是所有線程的操作都需要用戶程序自己處理,并且因為大多數系統調用都是阻塞的,所以一旦一個進程阻塞了,那么進程中的所有線程也會被阻塞。還有就是多處理器系統中如何將線程映射到其他處理器上也是一個比較大的問題。BxL28資訊網——每日最新資訊28at.com

「使用用戶線程加輕量級進程混合實現」:這種實現方式結合了上述兩種方式的優點,既具有用戶線程實現方式的線程切換快的優點,也具有內核線程實現方式的操作系統支持性好的優點。BxL28資訊網——每日最新資訊28at.com

「Java線程的實現方式」Java作為一門跨平臺的編程語言,實際上他的線程的實現其實是依賴具體的操作系統的。而比較常用的windows和linux來說,都是采用內核線程的方式實現的。也就是說,當我們在JAVA代碼中創建一個Thread的時候,其實是需要映射到操作系統的線程的具體實現的,因為常見的通過內核線程實現的方式在創建、調度時都需要進行內核參與,所以成本比較高,盡管JAVA中提供了線程池的方式來避免重復創建線程,但是依舊有很大的優化空間。而且這種實現方式意味著受機器資源的影響,平臺線程數也是有限制的。BxL28資訊網——每日最新資訊28at.com

虛擬線程

JDK19引入的虛擬線程,虛擬線程是輕量級線程,主要用于實現高吞吐量的并發應用程序。與傳統的線程相比,虛擬線程具有更低的創建和銷毀成本,可以更好地利用系統資源。BxL28資訊網——每日最新資訊28at.com

圖片圖片BxL28資訊網——每日最新資訊28at.com

虛擬線程的主要優勢:BxL28資訊網——每日最新資訊28at.com

  1. 高并發性:由于虛擬線程的創建和銷毀成本低,因此可以在短時間內創建大量的虛擬線程,實現高并發處理。
  2. 資源利用率高:虛擬線程可以共享同一個進程的資源,如內存空間、文件描述符等,避免了資源的浪費,提高了系統的資源利用率。
  3. 易于管理和觀察:虛擬線程是輕量級的,其創建、切換和管理都更加簡單和快速。此外,由于虛擬線程共享同一個進程的資源,因此可以使用現有的工具和框架來觀察和管理虛擬線程。

「虛擬線程與平臺線程的區別」:BxL28資訊網——每日最新資訊28at.com

  1. 虛擬線程是守護線程,不能通過setDaemon(false)方法將其更改為非守護線程。當所有啟動的非守護進程線程都終止時,JVM將終止,這意味著JVM不會等待虛擬線程完成后才退出。
  2. 虛擬線程的優先級始終為normal,并且不能通過setPriority()方法更改。在虛擬線程上調用此方法沒有效果。
  3. 虛擬線程不支持stop()、suspend()或resume()等方法。在虛擬線程上調用這些方法將拋出UnsupportedOperationException異常。
  4. 虛擬線程并不與特定的操作系統線程綁定,其與操作系統線程的映射關系比例也不是1:1,而是m:n。虛擬線程通常是由Java運行時來調度的,而不是操作系統。當在虛擬線程中運行的代碼調用阻塞的I/O操作時,Java運行時會將虛擬線程掛起,直到其可以恢復為止。

「如何使用虛擬線程」:通過Thread.startVirtualThread()可以運行一個虛擬線程:BxL28資訊網——每日最新資訊28at.com

Thread.startVirtualThread(() -> {    System.out.println("虛擬線程執行中...");});

通過Thread.Builder也可以創建虛擬線程,Thread類提供了ofPlatform()來創建一個平臺線程、ofVirtual()來創建虛擬現場。BxL28資訊網——每日最新資訊28at.com

Thread.Builder platformBuilder = Thread.ofPlatform().name("平臺線程");Thread.Builder virtualBuilder = Thread.ofVirtual().name("虛擬線程");Thread t1 = platformBuilder .start(() -> {...}); Thread t2 = virtualBuilder.start(() -> {...});

線程池也支持了虛擬線程,可以通過Executors.newVirtualThreadPerTaskExecutor()來創建虛擬線程:BxL28資訊網——每日最新資訊28at.com

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {    IntStream.range(0, 10000).forEach(i -> {        executor.submit(() -> {            Thread.sleep(Duration.ofSeconds(1));            return i;        });    });}

其實并不建議虛擬線程和線程池一起使用,因為Java線程池的設計是為了避免創建新的操作系統線程的開銷,但是創建虛擬線程的開銷并不大,所以其實沒必要放到線程池中。BxL28資訊網——每日最新資訊28at.com

「性能差異」從Runnable創建10000個線程,并使用虛擬線程和平臺線程執行它們,以比較兩者的性能。BxL28資訊網——每日最新資訊28at.com

final AtomicInteger atomicInteger = new AtomicInteger();Runnable runnable = () -> {  try {    Thread.sleep(Duration.ofSeconds(1));  } catch(Exception e) {      System.out.println(e);  }  System.out.println("Work Done - " + atomicInteger.incrementAndGet());};

傳統線程實現:BxL28資訊網——每日最新資訊28at.com

Instant start = Instant.now();try (var executor = Executors.newFixedThreadPool(100)) {  for(int i = 0; i < 10_000; i++) {    executor.submit(runnable);  }}Instant finish = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis();  System.out.println("總耗時 : " + timeElapsed);

虛擬線程實現:BxL28資訊網——每日最新資訊28at.com

Instant start = Instant.now();try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {  for(int i = 0; i < 10_000; i++) {    executor.submit(runnable);  }}Instant finish = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis();  System.out.println("總耗時 : " + timeElapsed);

最終結果:BxL28資訊網——每日最新資訊28at.com

總耗時 : 102323總耗時 : 1674

100秒和1.6秒的差距,虛擬線程的性能提升還是比較大的。BxL28資訊網——每日最新資訊28at.com

Java虛擬線程相對于傳統線程具有更好的性能表現,特別是在高并發場景下。但是需要注意的是,虛擬線程并不是萬能的,過度使用虛擬線程也可能會導致其他問題,如線程數量過多、線程間通信和同步問題等。BxL28資訊網——每日最新資訊28at.com


BxL28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-66350-0.htmlJDK19推出新特性虛擬線程是什么?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 微信 12 月打擊處理 3555 篇不實文章,十大謠言包括“網傳廣州限制外賣配送”

下一篇: 查電影評分上互聯網?別逗了!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美精品在线视频| 99视频精品在线| 国产精品美女在线观看| 国产精品家教| 亚洲四色影视在线观看| 欧美一区二区三区精品 | 欧美一级视频精品观看| 久久精品日产第一区二区三区| 毛片一区二区三区| 欧美性一区二区| 又紧又大又爽精品一区二区| 99精品欧美一区二区蜜桃免费| 一个色综合导航| 久久国产视频网| 欧美日韩1区2区3区| 国产亚洲一区二区三区| 亚洲欧洲一区二区三区| 欧美一区二区女人| 欧美精品七区| 激情久久影院| 亚洲综合三区| 欧美久久久久免费| 激情成人综合| 亚洲欧美第一页| 欧美国产在线电影| 国产在线观看91精品一区| av成人黄色| 美腿丝袜亚洲色图| 国产视频一区欧美| 亚洲天堂第二页| 欧美福利视频在线观看| 亚洲在线观看视频| 欧美综合国产| 午夜精品久久久久久久男人的天堂| 亚洲激情视频在线| 性欧美18~19sex高清播放| 午夜精品福利一区二区三区av| 蜜臀av性久久久久蜜臀aⅴ| 国产精品国产三级国产普通话蜜臀| 精品成人在线| 性欧美18~19sex高清播放| 欧美另类videos死尸| 尤物在线精品| 欧美在线播放高清精品| 国产精品爱久久久久久久| 亚洲精品国产系列| 久久人人97超碰精品888| 国产精品自在在线| 一二三四社区欧美黄| 欧美国产日本| 亚洲电影第1页| 久久久国产精品一区| 国产精品视频1区| 亚洲深夜影院| 欧美日韩人人澡狠狠躁视频| 亚洲高清一区二| 久久亚洲精品网站| 国内精品一区二区| 久久国产精品一区二区三区四区 | 国产精品视频一区二区高潮| 欧美日韩免费精品| 久久av资源网站| 欧美激情国产精品| 一区二区三区无毛| 欧美在线视频不卡| 国产精品久久777777毛茸茸| 一区二区欧美视频| 欧美日本亚洲韩国国产| 亚洲日本一区二区三区| 欧美大片一区二区三区| 在线免费观看成人网| 久久青青草综合| 狠狠久久婷婷| 久久久之久亚州精品露出| 国产亚洲精品自拍| 久久www免费人成看片高清 | 国产一区深夜福利| 欧美诱惑福利视频| 国产视频一区二区三区在线观看| 午夜国产精品视频免费体验区| 国产精品久久久久久久一区探花| 在线亚洲欧美视频| 国产精品久久二区| 亚洲一区中文| 国产精品青草久久| 性一交一乱一区二区洋洋av| 亚洲免费在线观看| 国产在线日韩| 亚洲人成毛片在线播放女女| 亚洲精品乱码久久久久久日本蜜臀| 亚洲人成在线免费观看| 亚洲精品一区二区三区婷婷月| 午夜精品久久久久久久久久久久 | 新狼窝色av性久久久久久| 欧美午夜精彩| 亚洲性线免费观看视频成熟| 欧美午夜a级限制福利片| 亚洲一级影院| 国产欧美日韩另类一区| 久久99在线观看| 一色屋精品视频在线观看网站| 老司机精品导航| 亚洲精品美女久久久久| 欧美日韩色综合| 亚洲女同精品视频| 国产一区二区无遮挡| 另类av一区二区| 亚洲精品中文字| 欧美网站在线| 欧美一区二区三区成人| 永久免费精品影视网站| 欧美久久久久久蜜桃| 亚洲一区国产一区| 亚洲一区国产视频| 欧美视频一区二区三区…| 在线精品视频一区二区| 欧美精品久久久久久久免费观看| 一区二区三区国产| 国产日韩一区二区| 免费欧美在线视频| 亚洲线精品一区二区三区八戒| 国产欧美在线观看一区| 美女脱光内衣内裤视频久久影院| 亚洲美女黄色| 国产欧美日韩亚洲| 欧美二区在线看| 亚洲欧美乱综合| 久久久久91| 日韩亚洲成人av在线| 国产欧美日韩一区| 另类综合日韩欧美亚洲| 一区二区不卡在线视频 午夜欧美不卡'| 国产精品尤物| 欧美成年人网站| 亚洲欧美资源在线| 亚洲精品1区2区| 国产老肥熟一区二区三区| 欧美成人一区二区| 欧美一级久久| 亚洲看片免费| 国产在线视频欧美| 欧美性做爰毛片| 六月婷婷一区| 香蕉久久夜色| 99精品欧美一区二区三区| 国内精品久久久久伊人av| 欧美日韩色一区| 免费亚洲视频| 欧美一区二区三区四区夜夜大片| 亚洲国产精品第一区二区| 中文亚洲字幕| 亚洲免费高清| 亚洲国产专区| 黄页网站一区| 国产欧美日韩另类视频免费观看| 欧美日韩精品一区二区天天拍小说 | 欧美一级专区免费大片| 韩国在线一区| 国产精品久久777777毛茸茸| 另类av导航| 午夜精品久久一牛影视| 一区二区欧美日韩视频| 亚洲国产欧美日韩精品| 国产视频欧美视频| 欧美日韩中文字幕日韩欧美| 毛片一区二区| 久久久久久网| 欧美一区二区三区视频免费播放| 9人人澡人人爽人人精品| 在线观看欧美日韩国产| 国产日韩精品久久| 欧美午夜精品久久久久免费视| 欧美freesex8一10精品| 欧美尤物一区| 亚洲制服少妇| 在线亚洲成人| 亚洲国产精品va在线看黑人| 欧美精品综合| 欧美尤物一区| 亚洲欧美日韩国产另类专区| 99在线热播精品免费| 亚洲黄色天堂| 1769国产精品| 激情六月婷婷久久| 国产无一区二区| 国产欧美一区二区精品性| 国产精品99一区| 欧美日韩视频一区二区| 欧美精选午夜久久久乱码6080| 欧美成人精品一区二区三区| 久久久久久久91| 久久精品中文字幕一区| 久久国产精品99国产| 欧美一区二区在线看| 欧美一区二区三区久久精品| 亚洲综合丁香| 午夜精品福利在线| 午夜亚洲福利| 午夜久久tv| 欧美一区二区三区在线播放| 亚洲欧美三级伦理| 香蕉国产精品偷在线观看不卡| 午夜欧美精品| 久久精品国产亚洲a|