旅游開發(fā) 網(wǎng)站建設(shè)山西網(wǎng)站seo
一、需求背景
相信大家入職到一個(gè)新公司(xinkeng),一般都會(huì)被分配去解決千古難題(caipigu),這些問題大概率很多不想去解決,并且代碼很多復(fù)雜,各種套娃。領(lǐng)導(dǎo)為檢驗(yàn)新人的能力,就會(huì)去讓新人去解決這種問題,一方面可以了解業(yè)務(wù)代碼,還能順手把沒人愿意做的事做了。但是,你做不好也沒關(guān)系,大佬也會(huì)說,這個(gè)其實(shí)都是歷史問題了,大家是不是有遇到這樣奇葩新手工作呢?歡迎大家評(píng)論區(qū)討論。今天給大家分享一個(gè)比較常見的問題,接口超時(shí)或者響應(yīng)時(shí)間比較長(zhǎng)怎么解決。
本文主要介紹,如何同個(gè)CompletableFuture異步編排,來解決分布多次查詢,導(dǎo)致接口響應(yīng)慢的問題。
二、CompletableFuture介紹與實(shí)戰(zhàn)
1.為什么要用CompletableFuture呢?
大家都知道,多線程可以解決,多次查詢第三方接口或者數(shù)據(jù)庫(kù)耗時(shí)的問題?但是有種情況,可能就很難去解決了,比如一個(gè)異步調(diào)用可能會(huì)依賴另一個(gè)異步調(diào)用的執(zhí)行結(jié)果。因?yàn)槎嗑€程一整個(gè)是一個(gè)任務(wù),多線程可能就不好處理。所以Java8就推出了一個(gè)新的并發(fā)框架—CompletableFuture??梢詤⒖紩骸秾?shí)戰(zhàn)java高并發(fā)程序設(shè)計(jì)》 、《Java8實(shí)戰(zhàn)》
2.CompletableFuture常用接口方法
1)CompletableFuture啟動(dòng)異步任務(wù)
CompletableFuture提供四種靜態(tài)方法來創(chuàng)建一個(gè)異步操作,可以自定義線程池,否沒有傳Executor則會(huì)使用默認(rèn)線程池。
無返回值的:
public static Comple