- 发布日期:2023-10-30 06:10 点击次数:138 uG环球炸金花上分_
[[424482]]
上一篇咱们先容了奈何使用@Async注解来创建异步任务,我不错用这种措施来达成一些并发操作,以加快任务的推行后果。然而,如若仅仅如前文那样径直粗拙的创建来使用,可能也曾会际遇一些问题。存在有什么问题呢?先来想考下,底下的这个接口,通过异步任务加快推行的达成,是否存在问题或风险呢?
@RestController 葡京娱乐百家乐public class HelloController { @Autowired private AsyncTasks asyncTasks; @GetMapping("/hello") public String hello() { // 将不错并行的解决逻辑,拆分红三个异步任务同期推行 CompletableFuture<String> task1 = asyncTasks.doTaskOne(); CompletableFuture<String> task2 = asyncTasks.doTaskTwo(); CompletableFuture<String> task3 = asyncTasks.doTaskThree(); CompletableFuture.allOf(task1, task2, task3).join(); return "Hello World"; } }
诚然,从单次接口调用来说,是莫得问题的。但当接口被客户端深广调用的时候,异步任务的数目就会多半增长:3 x n(n为请求数目),如若任务解决不够快,就很可能会出现内存溢出的情况。那么为什么会内存溢出呢?根底原因是由于Spring Boot默许用于异步任务的线程池是这么竖立的:
考虑到爱心伞放在公交车上取用方便,因此,在伞的设计上特别选了长柄的轻便伞。此外,伞的颜色也是独家调制的橙红色,希望为游客带去红心般的暖意,并且展示杭州的现代活力。
上分图中我标出的两个痛苦参数是需要包涵的:
韧性 queueCapacity:缓冲队伍的容量,默许为INT的最大值(2的31次方-1)。 maxSize:允许的最大线程数,默许为INT的最大值(2的31次方-1)。是以,默许情况下,一般任务队伍就可能把内存给堆满了。是以,咱们真确使用的时候,还需要对异步任务的推行线程池作念一些基础竖立,以防护出现内存溢出导致就业不成用的问题。
竖立默许线程池
太阳城周焯华皇冠客服飞机:@seo3687默许线程池的竖立很粗拙,只需要在竖立文献中完成即可,主要有以下这些参数:
皇冠体育博彩网spring.task.execution.pool.core-size=2 spring.task.execution.pool.max-size=5 spring.task.execution.pool.queue-capacity=10 spring.task.execution.pool.keep-alive=60s spring.task.execution.pool.allow-core-thread-timeout=true spring.task.execution.shutdown.await-termination=false spring.task.execution.shutdown.await-termination-period= spring.task.execution.thread-name-prefix=task-
具体竖立含义如下:
spring.task.execution.pool.core-size:线程池创建时的出手化线程数,默许为8 spring.task.execution.pool.max-size:线程池的最大线程数,默许为int最大值 spring.task.execution.pool.queue-capacity:用来缓冲推行任务的队伍,默许为int最大值 spring.task.execution.pool.keep-alive:线程休止前允许保抓悠然的工夫 spring.task.execution.pool.allow-core-thread-timeout:是否允许中枢线程超时 spring.task.execution.shutdown.await-termination:是否恭候剩余任务完成后才关闭愚弄 spring.task.execution.shutdown.await-termination-period:恭候剩余任务完成的最大工夫 spring.task.execution.thread-name-prefix:线程名的前缀,缔造好了之后不错陋劣咱们在日记中检察解决任务地点的线程池 出手试一试咱们径直基于之前chapter7-5的遏抑来进行如下操作。
ug环球直营网皇冠体育
最初,欧博百家乐注册在莫得进行线程池竖立之前,不错先推行一下单位测试:
@Test public void test1() throws Exception { long start = System.currentTimeMillis(); CompletableFuture<String> task1 = asyncTasks.doTaskOne(); CompletableFuture<String> task2 = asyncTasks.doTaskTwo(); CompletableFuture<String> task3 = asyncTasks.doTaskThree(); CompletableFuture.allOf(task1, task2, task3).join(); long end = System.currentTimeMillis(); log.info("任务一起完成,总耗时:" + (end - start) + "毫秒"); }
由于默许线程池的中枢线程数是8,是以3个任务会同期出手推行,日记输出是这么的:
环球体育入口2021-09-15 00:30:14.819 INFO 77614 --- [ task-2] com.didispace.chapter76.AsyncTasks : 出手作念任务二 2021-09-15 00:30:14.819 INFO 77614 --- [ task-3] com.didispace.chapter76.AsyncTasks : 出手作念任务三 2021-09-15 00:30:14.819 INFO 77614 --- [ task-1] com.didispace.chapter76.AsyncTasks : 出手作念任务一 2021-09-15 00:30:15.491 INFO 77614 --- [ task-2] com.didispace.chapter76.AsyncTasks : 完成任务二,耗时:672毫秒 2021-09-15 00:30:19.496 INFO 77614 --- [ task-3] com.didispace.chapter76.AsyncTasks : 完成任务三,耗时:4677毫秒 2021-09-15 00:30:20.443 INFO 77614 --- [ task-1] com.didispace.chapter76.AsyncTasks : 完成任务一,耗时:5624毫秒 2021-09-15 00:30:20.443 INFO 77614 --- [ main] c.d.chapter76.Chapter76ApplicationTests : 任务一起完成,总耗时:5653毫秒
接着,不错尝试在竖立文献中增多如下的线程池竖立
spring.task.execution.pool.core-size=2 spring.task.execution.pool.max-size=5 spring.task.execution.pool.queue-capacity=10 spring.task.execution.pool.keep-alive=60s spring.task.execution.pool.allow-core-thread-timeout=true spring.task.execution.thread-name-prefix=task-
日记输出的法例会造成如下的法例:
2021-09-15 00:31:50.013 INFO 77985 --- [ task-1] com.didispace.chapter76.AsyncTasks : 出手作念任务一 2021-09-15 00:31:50.013 INFO 77985 --- [ task-2] com.didispace.chapter76.AsyncTasks : 出手作念任务二 2021-09-15 00:31:52.452 INFO 77985 --- [ task-1] com.didispace.chapter76.AsyncTasks : 完成任务一,耗时:2439毫秒 2021-09-15 00:31:52.452 INFO 77985 --- [ task-1] com.didispace.chapter76.AsyncTasks : 出手作念任务三 2021-09-15 00:31:55.880 INFO 77985 --- [ task-2] com.didispace.chapter76.AsyncTasks : 完成任务二,耗时:5867毫秒 2021-09-15 00:32:00.346 INFO 77985 --- [ task-1] com.didispace.chapter76.AsyncTasks : 完成任务三,耗时:7894毫秒 2021-09-15 00:32:00.347 INFO 77985 --- [ main] c.d.chapter76.Chapter76ApplicationTests : 任务一起完成,总耗时:10363毫秒任务一和任务二会赶快占用中枢线程,任务三参预队伍恭候 任务一完成,开释出一个中枢线程,任务三从队伍中移出,并占用中枢线程出手解决
小心:这里可能有的小伙伴会问,最大线程不是5么,为什么任务三是进缓冲队伍,不是创建新线程来解决吗?这里要团结缓冲队伍与最大线程间的关连:唯有在缓冲队伍满了之后才会肯求逾越中枢线程数的线程来进行解决。是以,这里唯有缓冲队伍中10个任务满了,再来第11个任务的时候,才会在线程池中创建第三个线程来解决。这个这里就不具体写列子了,读者不错我方养息下参数,冒昧养息下单位测试来考据这个逻辑。
皇冠博彩平台您值得信赖博彩选择,提供多样化博彩游戏赛事直播,全面、优质博彩攻略技巧分享,您博彩游戏中尽情享受乐趣收益。平台操作简便,充值提款方便快捷,您打造最佳博彩体验最高博彩收益。
欧博博彩网站
热点资讯
- ug环球官网博彩平台注册送奖金_亲历者韩立勇:海角为什么行,又为什么不成了?
- 北京赛车百家乐博彩平台是否支持电脑客户端_儿科大夫坦言:娃身上4秉性显然,注定是高个,家长别当坏额外!
- 平博现金网怎么玩体育彩票挣钱(www.pufnv.com)
- 沙巴轮盘滚球体育彩票app_摩托车整车检测全尺寸测量3D扫描车架CASAIM三维扫描仪
- uG环球炸金花欧洲杯开幕式2021时间(www.betroyal888.com)
- 世界杯赌博zi82点com赃赃体育彩票app是官方的 | 分析师:黑海口岸农居品外运条约不再蔓延对商场心扉的作用徐徐弱化
- 亚星彩票网嗨直播体育app下载_为什么白酒放深化会更香醇?
- 真人游戏平台博彩网站存款 | 国联证券:线控底盘是高等智驾关节本质器 国产替代崛起正其时
- uG环球炸金花博彩网站注册送金_罗马诺:奥巴梅扬0转会费加盟马赛 签约至2026年
- 欧博直营网免费彩金博彩论坛_她折柳绝口不提前夫侯勇,和男儿心心相印,如今45岁似冻龄青娥