亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么實現響應式編程

發布時間:2021-06-30 17:21:28 來源:億速云 閱讀:651 作者:Leah 欄目:大數據

Java中怎么實現響應式編程,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Reactive概念

       Reactive Programming: 響應式編程,異步非阻塞就是響應式編程,與之相對應的就是命令式編程。是一種基于數據流(data stream)和變化傳遞的申明式的編程范式。 Reactive并不是一門新技術,不用Reactive照樣可是實現非阻塞編程,比如用觀察者模式實現。Reactive的另一種實現方式就是消息隊列。

       Reactive的關鍵點:

      聲明式的編程規范,數據流,傳播改變,使用動態數組或者靜態事件。   

      spring5實現了一部分Reactive:

      Spring WebFlux:  Reactive Web(non-blocking  servers  in genneral)

      Spring Web MVC:傳統的Servlet Web (serrvlet application in general)

為什么需要反應式的編程

 1.命令式編程VS聲明式編程

       實際上我們大多數程序員都是使用命令式編程,這也是計算機的工作方式。命令式編程就是對硬件操作的抽象,程序員要通過指令,精確的告訴計算機干什么事情。聲明式編程是解救程序員的利器,聲明式編程更關注的是我要什么(What)而不是怎么去做(How).SQL是經典的聲明式語言,我們通過SQL描述想要什么,最終由數據庫引擎執行SQL語句并將結果返回給我們。

2.同步編程VS異步編程

        在談到同步與異步的時候就要說一下,阻塞與非阻塞的概念,因為這兩組概念很容易混淆。他們描述的是同一個東西,但是關注點不同。阻塞與非阻塞描述的是當前線程的狀態,而同步與異步則關注方法調用結果的通知機制。因為是從不同角度描述方法的調用過程,所以這兩組概念可以相互組合,即將線程狀態以及結果通知機制進行組合。例如JDK1.3之前BIO是同步則塞,JDK1.4及以后的NIO是同步非阻塞,JDK1.7及以后的NIO2是異步非阻塞模式。

      同步編程的優點是代碼簡單并且容易理解,代碼按照先后順序執行,缺點是CPU利用率低,大部分都浪費在IO等待上。

      異步編程通過充分利用CPU資源并行執行任務,在執行時間和資源利用率上遠遠高于同步方法。

      同步編程面臨的挑戰:

傳統應用通常基于Servlet容器部署,而Servlet是基于線程的請求處理模型。從上文的討論中我們發現,通常需要設置一個較大的線程池獲得良好的性能,較大的線程池會導致以下三個問題:

1.額外的內存開銷。在Java中每個線程都有自己棧空間,默認是1MB。如果線程池的大小被設置為200,那么需要200MB內存,一方面造成內存浪費,一方面導致應用啟動慢。

2.CPU利用率低 有兩個方面會導致CPU利用率很低。一方面是JDK1.2之后,每個平臺的JVM實現都使用1:1線程模型,這意味著一個java線程會被映射到一個輕量級進程,而有效的輕量級進程數取決于CPU的個數以及核數。如果Java的線程數遠大于輕量級進程數,則頻繁的線程上下文切換會浪費大量的CPU時間,另一方面,由于傳統的遠程操作或者IO操作均為阻塞操作,會導致執行線程掛起從而無法執行其他任務,大大降低了CPU的利用率。

3.資源競爭激烈 當增大線程池后其他共享資源可能成為性能瓶頸,如數據庫連接資源。會導致多個線程競爭數據庫連接,使得數據庫連接成為系統瓶頸。

關于Java中怎么實現響應式編程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

利辛县| 桦南县| 仁怀市| 子洲县| 来宾市| 元朗区| 中宁县| 南平市| 陇南市| 易门县| 隆昌县| 汝州市| 夏邑县| 东辽县| 自治县| 新乡市| 靖边县| 江华| 太仆寺旗| 祁连县| 玉环县| 五华县| 黎城县| 海盐县| 新郑市| 永春县| 临桂县| 嘉禾县| 鹤壁市| 萝北县| 额济纳旗| 台中县| 五家渠市| 酒泉市| 莱西市| 芜湖市| 普兰县| 金溪县| 达孜县| 深泽县| 武胜县|