SpringBoot非官方教程,非同步方法

2021-08-14 15:29:15 字數 2708 閱讀 4184

這篇文章主要介紹在springboot 使用非同步方法,去請求github api.

在pom檔案引入相關依賴:

org.springframework.bootgroupid>

spring-boot-starterartifactid>

dependency>

org.springframeworkgroupid>

spring-webartifactid>

dependency>

com.fasterxml.jackson.coregroupid>

jackson-databindartifactid>

dependency>

建立乙個接收資料的實體:

@jsonignoreproperties(ignoreunknown=true)

public

class

user

public

void

setname(string name)

public string getblog()

public

void

setblog(string blog)

@override

public string tostring()

}

建立乙個請求的 githib的service:

@service

public

class

githublookupservice

@async

public futurefinduser(string user) throws interruptedexception

}

通過,resttemplate去請求,另外加上類@async 表明是乙個非同步任務。

開啟非同步任務:

@enableasync

public

class

extends

asyncconfigurersupport

@override

public executor getasyncexecutor() }

通過@enableasync開啟非同步任務;並且配置asyncconfigurersupport,比如最大的執行緒池為2.

測試**如下:

@component

public

class

implements

commandlinerunner

@override

public

void

run(string... args) throws exception

// print results, including elapsed time

logger.info("elapsed time: " + (system.currenttimemillis() - start));

logger.info("--> " + page1.get());

logger.info("--> " + page2.get());

logger.info("--> " + page3.get());

}}

啟動程式,控制台會列印:

2017-04-30 13:11:10.351 info 1511 — [ githublookup-1] com.forezp.service.githublookupservice : looking up pivotalsoftware 

2017-04-30 13:11:10.351 info 1511 — [ githublookup-2] com.forezp.service.githublookupservice : looking up cloudfoundry 

2017-04-30 13:11:13.144 info 1511 — [ githublookup-2] com.forezp.service.githublookupservice : looking up spring-projects

耗時:3908

分析:可以卡的前面2個方法分別在githublookup-1 和githublookup-2執行,第三個在githublookup-2執行,注意因為在配置執行緒池的時候最大執行緒為2.如果你把執行緒池的個數為3的時候,耗時減少。

如果去掉@async,你會發現,執行這三個方法都在main執行緒中執行。耗時總結,如下:

2017-04-30 13:13:00.934 info 1527 — [ main] com.forezp.service.githublookupservice : looking up pivotalsoftware 

2017-04-30 13:13:03.571 info 1527 — [ main] com.forezp.service.githublookupservice : looking up cloudfoundry 

2017-04-30 13:13:04.865 info 1527 — [ main] com.forezp.service.githublookupservice : looking up spring-projects

耗時:5261

通過這乙個小的栗子,你應該對非同步任務有了一定的了解。

SpringBoot非官方教程 終章 文章彙總

springboot非官方教程,可能最接近於官方的乙個教程,大多數案例都來自於官方文件,為了更好的理解,加入了個人的改造。謝謝支援,記得明星哦。springcloud系列教程 springboot非官方教程 第一篇 構建第乙個springboot工程 springboot非官方教程 第二篇 spri...

非官方答覆

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

WinX非官方手冊(一)

對 winx 的一些整理 很久沒有寫 winx 的東西了,開學了,很忙,呵呵,又要準備考研,沒有時間來研究了,而且也沒有做什麼 gui,基本寫的都是 cui的東西,所以到 winx 就放下了。昨天寫了乙個最小二乘法的直線擬使程式,想做成 gui的,以後做實驗的時候用,於是又想起了 winx 鬱悶的是...