Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

你應該這樣去開發接口:Java多線程並行計算

2021 年 3 月 11 日 大杂绘闻

所謂的高並發除了在架構上的高屋建瓴,還得需要開發人員在具體業務開發中注重自己的每一行代碼、每一個細節,面子有的同時,更重要的還是要有裏子。

你應該這樣去開發接口:Java多線程並行計算

可以看到我這裏調用了4個方法,每一個方法爲模擬真實耗時,所以都是延遲100ms返回一個字符串:

你應該這樣去開發接口:Java多線程並行計算

線程池+Future

多運行幾次,看輸出響應時間:

耗時:108ms 耗時:105ms 耗時:105ms

效果是不是很明顯?

直接相當于一個方法的調用耗時,實際開發中如果你的一個接口經過壓測耗時在100ms左右(大多數正規公司對接口性能都會要求不超過100ms),那麽再通過線程池+Future並行計算的方式,並可以瞬間將你的接口性能提高上去,再也不用擔心壓測不過了。

有時候測試同學告訴你接口壓測不過是不是覺得很沒面子?那是對你職業水平最大的否定~

Java8的CompletableFuture

Future是java.util.concurrent並發包中的接口類,用來表示一個線程異步執行後的結果,有如下核心方法:

  • Future.get():阻塞調用線程,直到計算結果返回
  • Future.isDone():判斷線程是否執行完畢
  • Future.cancel():取消當前線程的執行

我們可以知道的是,Future.get()是阻塞調用的,要想拿到線程執行的結果,必須是Future.get()阻塞或者while(Future.isDone())輪詢方式調用。這種方式叫“主動拉(pull)”,現在都流行響應式編程,即“主動推(push)”的方式,當線程執行完了,你告訴我就好了。

Java8設計了CompletableFuture這樣的一個類,我們先來看看如何用CompletableFuture來開發之前的代碼:

你應該這樣去開發接口:Java多線程並行計算

執行三次請求耗時:

耗時:103ms 耗時:101ms 耗時:103ms最後

以上就是如何讓自己的接口並行計算起來的三種實現方式,屬于日常開發中比較常用的一個小技巧,這裏沒有過多說明這三種方式的具體區別,實際上還需要大家不斷的在開發中去使用,查閱更多相關源碼和資料,只有等你真正用起來的時候,你才能有所體會!

感謝各位的閱讀,如果這篇文章對您有幫助,歡迎“點贊+轉發”!關注“java架構設計”獲取更多免費技術文章幹貨!

相關文章:

  • 她二十歲成名,四十八歲被關,出獄後快六十歲高齡,卻在美國風光嫁豪門!面對生活的種種挫折,她是這樣激勵自己的…
  • 3.5萬一晚,沒有電視、空調,不管三餐,居然年入109億,拯救了這間瀕臨倒閉的酒店!
  • 她48歲坐牢,出獄後以58歲的高齡在美國風光嫁豪門,如今她60歲了身材豐滿如18歲,沒想到她竟然在監獄裡是這樣保養身體~
  • 3歲成為繼承人,等了64年未能繼位,他卻毫不在意,花了32年成為仙境莊園的國王
  • 陳克明,還是對服裝界下手了
  • 什麽才是一個臨終的人或者新死的人真正需要的東西呢?
時尚

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2026 快讀 | 服務協議 | DMCA | 聯繫我們