通常Java開發人員喜歡使用同步代碼撰寫程式,因為這種請求(request) /回應(response) 的方式比較簡單,并且比較符合編程人員的思維習慣;這種做法很好,直到系統出現性能瓶頸,在使用同步編程方式時,由于每個執行緒同時只能發起一個請求 并同步等待回傳, 所以為了提高系統性能,此時我們就需要引入更多的執行緒來實作并行化處理,但是多執行緒下對共享資源進行訪問時,不可避免會引入資源爭用和并發問題;另外,作業系統層面對執行緒的個數是有限制的,不可能通過無限增加執行緒數來提供系統性能;而且,使用同步阻塞的編程方式還會浪費資源,比如發起網路IO請求時,呼叫執行緒就會處于同步阻塞等待回應結果的狀態,而這時候呼叫執行緒明明可以去做其他事情,等網路IO回應結果回傳后再對結果進行處理,
可見通過增加單機系統執行緒個數的并行編程方式并不是“靈丹妙藥”,通過撰寫異步、非阻塞的代碼,則可以使用相同的底層資源將執行切換到另一個活動任務,然后在異步處理完成后再回傳到當前執行緒繼續處理,從而提高系統性能,
異步編程是可以讓程式并行運行的一種手段,其可以讓程式中的一個作業單元與主應用程式執行緒分開獨立運行,并且在作業單元運行結束后,會通知主應用程式執行緒它的運行結果或者失敗原因,使用異步編程可以提高應用程式的性能和回應能力等,
比如當呼叫執行緒使用異步方式發起網路IO請求后,呼叫執行緒就不會同步阻塞等待回應結果,而是在記憶體保存請求背景關系后,馬上回傳去做其他事情,等網路IO回應結果回傳后再使用IO執行緒通知業務執行緒回應結果已經回傳,由業務執行緒對結果進行處理,可見,異步呼叫方式提高了執行緒的利用率,讓系統有更多的執行緒資源來處理更多的請求,比如在移動應用程式中,在用戶操作移動設備螢屏發起請求后,如果是同步等待后臺服務器回傳結果,則當后臺服務操作非常耗時時,就會造成用戶看到移動設備螢屏凍結(一 直處于請求處理中),在結果回傳前,用戶不能操作移動設備的其他功能,這對用戶體驗非常不好,而使用異步編程時,當發起請求后,呼叫執行緒會馬上回傳,具體回傳結果會通過UI執行緒異步進行渲染,且在這期間用戶可以使用移動設備的其他功能,
今天分享這份學習筆記就是一份Java異步編程的頂級教程筆記!
由于筆記的內容過多,下面只能為大家展示部分內容,完整藍光版免費的獲取方式在文末!
詳細章節目錄



第1章認識異步編程
本章主要介紹異步編程的概念與作用,Java中 異步編程的場景以及不同異步編程場景應使用什么技術來實作,

第2章顯式使用執行緒和執行緒池實作異步編程
本章主要探討如何顯式地使用執行緒和執行緒池實作異步編程,這包含如何顯式使用執行緒實作異步編程以及使用執行緒編程的缺點,如何顯式使用執行緒池實作異步編程以及執行緒池實作原理,

第3章基于JDK中的Future實作異步編程
本章主要講解如何使用JDK中的Future實作異步編程,這包含如何使用FutureTask實作異步編程及其內部實作原理;如何使用CompletableFuture實作異步編程及其內部實作原理,以及CompletableFuture與JDK Stream如何完美結合的,

第4章Spring框架中的異步執行
在Spring Framework中分別使用TaskExecutor和TaskScheduler介面提供異步執行和任務調度的抽象,本章我們著重講解基于TaskExecutor支撐的注解@Asyne是如何實作異步處理的,

第5章基于反應式編程實作異步編程
本章主要講解如何使用反應式編程實作異步編程,其包含了什么是反應式編程,為何需要反應式編程,反應式編程特點與價值是什么,以及如何基于反應式編程實作庫RxJava與Reactor實作異步編程,

第6章Web Servlet的異步非阻塞處理
本章主要探討Servlet3.0規范前的同步處理模型和缺點,Servlet3.0規范提供的異步處理能力與Servlet3.1規范提供的非阻塞I0能力,以及Spring MVC中提供的異步處理能力,

第7章Spring WebFlux的異步非阻塞處理
本章主要講解Spring框架5.0中引入的新的WebFlux技術堆疊,并介紹其存在的價值與意義、并發模型與適用場景、如何基于WebFlux實作異步編程,以及其內部的實作原理,

第8章高性能異步編程框架和中間件
本章主要介紹一些高性能異步編程框架和中間件,這包含異步、基于事件驅動的網路編程框架一Netty; 高性能RPC框架一Apache Dubbo;高性能執行緒間訊息傳遞庫一Disruptor;異步、分布式、基于訊息驅動的框架一Akka; 高性能分布式訊息框架一Apache RocketMQ,

第9章Go語言的異步編程能力
本章主要講解Go語言的異步編程能力,這包含Go語言的執行緒模型,以及如何使用原語goroutine與channel實作異步編程,最后基于goroutine與channel構建了一個支持回壓、異步編程的管道,

有需要藍光版Java異步編程筆記的朋友:
——————點贊+評論文章,關注我之后掃碼獲取,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/164645.html
標籤:python
