springboot中使用线程池

1.什么场景下使用线程池?

在异步的场景下,可以使用线程池

不需要同步等待,

不需要管上一个方法是否执行完毕,你当前的方法就可以立即执行

我们来模拟一下,在一个方法里面执行3个子任务,不需要相互等待

2.代码引入线程池配置类

package com.example.demo2.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.concurrent.*;/*** 线程池工具类*/
@Configuration
public class XianChengConfig {/*** 创建线程池放入ioc容器*/@Beanpublic ThreadPoolExecutor threadPoolExecutor(){//核心线程数int corePoolSize = 10;//最大线程数int maximumPoolSize =10;//线程存活时间单位long keepAliveTime = 60;//线程存活时间 秒TimeUnit unit = TimeUnit.SECONDS;//任务队列BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100);//线程工厂ThreadFactory threadFactory = Executors.defaultThreadFactory();//拒绝策略 谁调用谁执行RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy();ThreadPoolExecutor bean = new ThreadPoolExecutor( corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,threadFactory,handler);return bean;}
}

3.使用线程池

package com.example.demo2.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.ThreadPoolExecutor;@RestController
public class TestController {@Autowiredprivate ThreadPoolExecutor threadPoolExecutor;@GetMapping("/test")public String test() {System.out.println("---------------方法1------------------");threadPoolExecutor.execute(()->{//异步执行 角色任务syncRole();});System.out.println("---------------方法2------------------");threadPoolExecutor.execute(()->{//异步执行 用户任务syncUser();});System.out.println("----------------方法3-----------------");threadPoolExecutor.execute(()->{//异步执行 菜单任务syncMenu();});return "ok";}private void syncRole(){System.out.println("开始获取角色,线程名称:"+Thread.currentThread().getName());try {//阻塞4秒Thread.sleep(1000*4);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("结束获取角色,线程名称:"+Thread.currentThread().getName());}private void syncUser(){System.out.println("开始获取用户,线程名称:"+Thread.currentThread().getName());try {//阻塞3秒Thread.sleep(1000*3);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("结束获取用户,线程名称:"+Thread.currentThread().getName());}private void syncMenu(){System.out.println("开始获取菜单,线程名称:"+Thread.currentThread().getName());try {//阻塞2秒Thread.sleep(1000*2);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("结束获取菜单,线程名称:"+Thread.currentThread().getName());}
}

http://localhost:8080/test

可以看到,角色没有执行完,用户开始执行

用户没有执行完,菜单也开始执行

3个任务不需要等待其他方法执行完,才去执行自己的任务

这就是异步的场景,这种场景下就可以使用多线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87645.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask+LayUI开发手记(十):构建统一的选项集合服务

作为前端最主要的组件&#xff0c;无论是layui-table表格还是layui-form表单&#xff0c;其中都涉及到选项列的处理。如果是普通编程&#xff0c;一个任务对应一个程序&#xff0c;自然可以就事论事地单对单处理&#xff0c;前后端都配制好选项&#xff0c;手工保证两者的一致性…

redis的数据初始化或增量更新的方法

做系统开发的时候&#xff0c;经常需要切换环境&#xff0c;做一些数据的初始化的工作&#xff0c;而redis的初始化&#xff0c;假如通过命令来执行&#xff0c;又太复杂&#xff0c;因为redis有很多种数据类型&#xff0c;全部通过敲击命令来初始化的话&#xff0c;打的命令实…

【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

sparkjar任务运行

mainclass&#xff1a; test.sparkjar.SparkJarTest

Web攻防-文件下载文件读取文件删除目录遍历路径穿越

知识点&#xff1a; 1、WEB攻防-文件下载&读取&删除-功能点&URL 2、WEB攻防-目录遍历&穿越-功能点&URL 黑盒分析&#xff1a; 1、功能点 文件上传&#xff0c;文件下载&#xff0c;文件删除&#xff0c;文件管理器等地方 2、URL特征 文件名&#xff1a; d…

使用LIMIT + OFFSET 分页时,数据重复的风险

在使用 LIMIT OFFSET 分页时&#xff0c;数据重复的风险不仅与排序字段的唯一性有关&#xff0c;还与数据变动&#xff08;插入、删除、更新&#xff09;密切相关。以下是详细分析&#xff1a; 一、数据变动如何导致分页异常 1. 插入新数据 场景&#xff1a;用户在浏览第 1 页…

Excel 数据透视表不够用时,如何处理来自多个数据源的数据?

当数据透视表感到“吃力”时&#xff0c;我们该怎么办&#xff1a; 数据量巨大&#xff1a;Excel工作表有104万行的限制&#xff0c;当有几十万行数据时&#xff0c;透视表和公式就会变得非常卡顿。数据来源多样&#xff1a;数据分散在多个Excel文件、CSV文件、数据库甚至网页…

cf(1034)Div3(补题A B C D E F)

哈&#xff0c;这个比赛在开了不久之后&#xff0c;不知道为啥卡了差不多20来分钟&#xff0c;后面卡着卡着就想睡觉了。实在是太困了.... 题目意思&#xff1a; Alice做一次操作&#xff0c;删除任意数字a,而Bob做一次操作删除b使得ab对4取余是3。 获胜条件&#xff0c;有人…

浏览器与服务器的交互

浏览器地址栏输入URL&#xff08;网址​​&#xff09; ​​​​(1) 服务器进行URL解析​​&#xff1a;验证URL格式&#xff0c;提取协议、域名等 ​​​​(2) 服务器进行DNS查询​​&#xff1a;将域名转换为IP地址&#xff08;可能涉及缓存或DNS预取&#xff09; ​​​​…

Spring Boot中POST请求参数校验的实战指南

在现代的Web开发中&#xff0c;数据校验是确保应用程序稳定性和安全性的关键环节。Spring Boot提供了强大而灵活的校验机制&#xff0c;能够帮助开发者轻松地对POST请求参数进行校验。本文将详细介绍如何在Spring Boot中实现POST请求参数的校验&#xff0c;并通过具体的代码示例…

Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南

重要提醒&#xff1a;使用Param注解时&#xff0c;务必导入正确的包&#xff01; import org.apache.ibatis.annotations.Param; 很多开发者容易错误导入Spring的Param&#xff0c;导致参数绑定失败&#xff01; 一、为什么需要传递List参数&#xff1f; 最常见的场景是动态构…

Design Compiler:自适应重定时(Adaptive Retiming)

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 简介 重定时是DC Ultra引入的一种时序优化技术&#xff0c;可以将时序单元&#xff08;触发器和锁存器&#xff09;穿越组合逻辑前后移动&#xff0c;以优化设…

解决kali Linux在VMware中的全局缩放问题

在每次启动kali时&#xff0c;因为屏幕分辨率过高&#xff0c;系统整体特别小&#xff0c;该怎么操作调整合适呢 在搜索中搜索kali HiDPI Mode 选择yes 然后就会自动调整合适了

Python关键字梳理

在 Python 中&#xff0c;关键字&#xff08;Keywords&#xff09;是具有特殊含义的保留字&#xff0c;它们用于定义语法和结构。async 是 Python 3.5 引入的关键字&#xff0c;用于支持异步编程&#xff08;Asynchronous Programming&#xff09;。下面我将详细讲解 async 及其…

结构体实战:用Rust编写矩形面积计算器

文章目录结构体实战&#xff1a;用Rust编写矩形面积计算器&#x1f4d0; 问题描述1️⃣ 基础版&#xff1a;独立变量&#xff08;混乱版&#xff09;2️⃣ 进阶版&#xff1a;使用元组3️⃣ 终极版&#xff1a;使用结构体&#xff08;优雅版&#xff09;&#x1f3af; 运行结果…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究

摘要&#xff1a;本文聚焦场景消费逻辑&#xff0c;探讨开源链动21模式AI智能名片S2B2C商城小程序在场景零售中的应用。通过分析场景消费中消费者体验的关键作用&#xff0c;结合该技术组合的特性&#xff0c;阐述其如何优化场景内容、增强场景美感&#xff0c;为消费者创造超乎…

新发布:26考研院校和专业大纲

复习方向错了&#xff0c;努力可能白费 近日&#xff0c;多所高校陆续发布2026年硕士研究生招生考试自命题科目大纲&#xff0c;为备考的学子们指明了复习方向。今年的考纲有哪些重要变化&#xff1f;又该如何应对&#xff1f;本文为你全面梳理&#xff01; 院校和专业发布详情…

matlab/Simulink-全套50个汽车性能建模与仿真源码模型9

50个simulink模型&#xff08;所有模型罗列如下&#xff0c;没罗列就是没有&#xff0c;包含子模块总共50个。&#xff09; 基于汽车驱动力-行驶阻力平衡图的汽车动力性仿真模型 基于汽车动力特性图的汽车动力性仿真模型 基于汽车功率平衡图的汽车动力性仿真模型 电动汽车动力…

为什么星敏感器(Star Tracker)需要时间同步?—— 从原理到应用的全解析

为什么星敏感器&#xff08;Star Tracker&#xff09;需要时间同步&#xff1f;—— 从原理到应用的全解析 引言 在卫星姿态控制系统中&#xff0c;星敏感器&#xff08;Star Tracker, 简称“星敏”&#xff09; 是最精确的姿态测量设备之一&#xff0c;其精度可达角秒级&…

【Cocos TypeScript 零基础 24.1】

目录 首次实战开发心得实战项目<修仙录游戏> 首次实战开发心得 遇到的技术问题也多 发表问题也不少 收入问题 本人都将会写篇专栏总结一下 实战项目<修仙录游戏> 上图是已上线的实战项目二维码 耗费的时间太久了 下次将跟新开发遇到的各种奇奇怪怪的问题 各位看…