亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

在Spring Boot2中使用CompletableFuture的方法教程

2024-07-14 08:43:27
字體:
來源:轉載
供稿:網友

前言

在Spring Boot中有一個注釋@Async,可以幫助開發人員開發并發應用程序。但使用此功能非常棘手。在本博客中,我們將了解如何將此功能與CompletableFuture一起使用。我認為你已經知道關于CompletableFuture的基礎,所以我不會在這里重復這個概念。

首先,您需要使用@EnableAsync來注釋您的應用程序類,這個注釋告訴Spring查找使用@Async注釋的方法并在單獨的執行程序中運行它們。

@SpringBootApplication@EnableAsyncpublic class App { RestTemplate public static void main(String[] args) {  SpringApplication.run(App.class, args); }}

如果您查看有關使用CompletableFuture和@Async的Spring Boot示例,您會注意到他們使用此功能的方式基于REST請求,在我看來,我相信,它有點受限,它不會給你在其他情況下如何使用此功能的線索。例如,如果你有一個長期運行的任務,你會怎么做?

// Source : https://spring.io/guides/gs/async-method/package hello;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.web.client.RestTemplateBuilder;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Service;import org.springframework.web.client.RestTemplate;import java.util.concurrent.CompletableFuture;@Servicepublic class GitHubLookupService {  private static final Logger logger = LoggerFactory.getLogger(GitHubLookupService.class);  private final RestTemplate restTemplate;  public GitHubLookupService(RestTemplateBuilder restTemplateBuilder) {    this.restTemplate = restTemplateBuilder.build();  }  @Async  public CompletableFuture<User> findUser(String user) throws InterruptedException {    logger.info("Looking up " + user);    String url = String.format("https://api.github.com/users/%s", user);    User results = restTemplate.getForObject(url, User.class);    // Artificial delay of 1s for demonstration purposes    Thread.sleep(1000L);    return CompletableFuture.completedFuture(results);  }}

在FindUser(String user)中,它在主線程中使用CompletableFuture,此方法的主要任務是使用RestTemplate從github獲取數據,功能是“執行HTTP請求的同步客戶端”。如何使用長時間運行的任務,如調用網絡功能,如從REST端點ping服務器?在這種情況下,您需要定制CompletableFuture。你不能簡單地調用:

return CompletableFuture.completedFuture(results);

如何使用CompletableFuture

要在代碼中使用@Async,您的方法必須返回Future或CompletableFuture,看一下下面的例子:

@Async  public CompletableFuture<Boolean> isServerAlive(String ip) {    CompletableFuture<Boolean> future = new CompletableFuture<Boolean>(){      @Override      public Boolean get() throws InterruptedException, ExecutionException {        InetAddress address = null;        try {          address = InetAddress.getByName(ip);          return address.isReachable(1000);        } catch (UnknownHostException e) {          e.printStackTrace();          return false;        } catch (IOException e) {          e.printStackTrace();          return false;        }      }    };    return future;}

在這個例子中,我重寫了get()方法并返回CompletableFuture而沒有任何線程執行器,事實上我們要求Spring在不同的線程中執行@Async方法,但是我們不提供任何線程執行器,只有后臺工作者中運行就足夠了。

download source code from github

注意:在這個例子中,我決定在Spring Boot中使用一個網絡函數,僅僅是為了一個參數。但最好不要在REST端點中直接使用網絡功能,特別是當您希望立即獲得結果時。原因是:網絡功能是阻塞的,這意味著,如果你調用這個REST端點,您必須在端點等待獲取結果。強烈建議使用其他方法(如queue或push方法)(例如websocket)來調用阻塞函數。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交99久久久久99按摩| 日韩美女视频免费看| 亚洲成年人在线| 久久影视三级福利片| 欧美自拍大量在线观看| 久久久精品一区| 日韩av在线免费看| 精品色蜜蜜精品视频在线观看| 中文字幕亚洲欧美一区二区三区| 92国产精品视频| 亚洲久久久久久久久久久| 国产91久久婷婷一区二区| 米奇精品一区二区三区在线观看| 国产精品人成电影| 久久99视频精品| 国产aⅴ夜夜欢一区二区三区| 欧美老女人bb| 精品国产鲁一鲁一区二区张丽| 日韩av综合网| 国产一区二区免费| 日韩电影网在线| 欧美激情欧美激情在线五月| 亚洲欧洲免费视频| 亚洲午夜av电影| 美女久久久久久久久久久| 亚洲人成欧美中文字幕| 国产精品电影观看| 九九精品视频在线| 中文字幕久精品免费视频| 国产精品久久久久av| 伊人久久精品视频| 久久精品免费电影| 亚洲国产精品va在线观看黑人| 欧美一区亚洲一区| 这里只有精品在线观看| 久久网福利资源网站| 深夜福利一区二区| 国产网站欧美日韩免费精品在线观看| 国模gogo一区二区大胆私拍| 欧美猛少妇色xxxxx| 亚洲人成电影在线播放| 美女扒开尿口让男人操亚洲视频网站| 日韩在线免费观看视频| 欧美精品一区在线播放| 国产精品久久久久久久9999| 黑人狂躁日本妞一区二区三区| 亚洲欧美另类在线观看| 国产精品高潮呻吟视频| 国产精品户外野外| 91网站在线看| 欧美黑人视频一区| 亚洲精品免费一区二区三区| 亚洲3p在线观看| 成人黄色免费网站在线观看| 欧美视频不卡中文| 亚洲美女视频网站| 美女扒开尿口让男人操亚洲视频网站| 伊人男人综合视频网| 国产欧美一区二区白浆黑人| 亚洲免费精彩视频| 亚洲最大福利网| 国产日韩视频在线观看| 亚洲一区免费网站| 亚洲欧洲国产一区| 日韩电影在线观看永久视频免费网站| 国产精品中文字幕在线观看| 亚洲自拍偷拍一区| 91在线精品播放| 国产成人免费av电影| 久久久精品国产一区二区| 亚洲国产日韩欧美在线动漫| 91久久综合亚洲鲁鲁五月天| 国产专区欧美专区| 亚洲国产精品成人精品| 国内揄拍国内精品少妇国语| 最新69国产成人精品视频免费| 久久久久北条麻妃免费看| 国产精品露脸自拍| 久久久噜噜噜久噜久久| 91热精品视频| 91网站在线看| 91高清在线免费观看| 欧美日韩一区免费| 国产精品久久网| 亚洲夜晚福利在线观看| 亚洲精品一区av在线播放| 欧美午夜宅男影院在线观看| 国产精品视频导航| 狠狠久久亚洲欧美专区| 欧美日韩免费在线观看| 久久国产天堂福利天堂| 美乳少妇欧美精品| 欧美美最猛性xxxxxx| 欧美日韩精品二区| 91精品国产综合久久香蕉最新版| 亚洲精品综合久久中文字幕| 国产精品吹潮在线观看| 成人黄色影片在线| 在线亚洲欧美视频| 久久久久久久久久久91| 亚洲欧美日本精品| 久热在线中文字幕色999舞| 精品久久久久久电影| 亚洲精品国精品久久99热| 2019国产精品自在线拍国产不卡| 日韩成人av网址| 国产精品色婷婷视频| 国产成人精品视| 欧美美女18p| 2018国产精品视频| 国产成人精品免高潮在线观看| 97国产suv精品一区二区62| 国产精品91久久久久久| 中文字幕久热精品在线视频| 欧美一区亚洲一区| 亚洲国产成人在线视频| 97久久精品人搡人人玩| 国语自产精品视频在免费| 国产精品丝袜久久久久久高清| 中文字幕日本欧美| 国产精品专区h在线观看| 久久久人成影片一区二区三区观看| 日韩激情av在线免费观看| 最近日韩中文字幕中文| 久久精品免费播放| 亚洲天堂av在线免费| 91久久久亚洲精品| 亚洲色图在线观看| 日韩有码在线电影| 国产精品久久999| 日韩中文理论片| 欧美激情视频网站| 992tv成人免费影院| 国产日韩在线亚洲字幕中文| 亚洲一区亚洲二区亚洲三区| 亚洲女成人图区| 欧美激情久久久久| 久久亚洲精品网站| 欧美大荫蒂xxx| 少妇激情综合网| 亚洲国产日韩欧美在线99| 国产精品偷伦一区二区| 久久久国产精品亚洲一区| 亚洲欧洲xxxx| 日韩av三级在线观看| 欧美性xxxxx极品娇小| 在线精品国产成人综合| 亚洲一区二区三区乱码aⅴ| 国产精品h片在线播放| 亚洲精品视频久久| 日本老师69xxx| 国产精品久久激情| 欧美日韩第一视频| 亚洲免费伊人电影在线观看av| 久久久爽爽爽美女图片| 精品久久久久久久久国产字幕| 国产一区二区在线免费| 中文亚洲视频在线| 国内精品视频一区| 亚洲第一免费网站| 亚洲欧美日韩精品久久亚洲区| 欧美日韩国产在线| 日本高清+成人网在线观看| 国产精品日韩一区|