iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >springboot如何创建线程池
  • 326
分享到

springboot如何创建线程池

2023-06-22 06:06:15 326人浏览 独家记忆
摘要

这篇文章主要介绍SpringBoot如何创建线程池,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot创建线程池两种方式1.使用static代码块创建这样的方式创建的好处是当代码用到线程池的时候才会初始

这篇文章主要介绍SpringBoot如何创建线程池,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

springboot创建线程池两种方式

1.使用static代码块创建

这样的方式创建的好处是当代码用到线程池的时候才会初始化核心线程数

具体代码如下:

public class HttpapiThreadPool {  static int cpuNums = Runtime.getRuntime().availableProcessors();  private static int corePoolSize = 10;  private static int maximumPoolSize = cpuNums * 5;  public static ExecutorService httpApiThreadPool = null;    static{  System.out.println("创建线程数:"+corePoolSize+",最大线程数:"+maximumPoolSize);  //建立10个核心线程,线程请求个数超过20,则进入队列等待  httpApiThreadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, 0L,  TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(100),new ThreadFactoryBuilder().setNameFORMat("PROS-%d").build()); } }

使用方法

 public static void main(String[] args) {  HttpApiThreadPool.httpApiThreadPool.execute(()->System.out.println("测试")); }

注意:

不能使用Executors的方法创建线程池,这个是大量的生产事故得出来的结论

maximumPoolSize本程序使用的是cup数的5倍,你可以看你实际情况用

new ThreadFactoryBuilder().setNameFormat("PROS-%d").build() 给每个线程已名字,可以方便调试

2.使用@Configuration @bean注解,程序启动时创建

@Configurationpublic class TreadPoolConfig { private Logger logger = LoggerFactory.getLogger(TreadPoolConfig.class);  int cpuNums = Runtime.getRuntime().availableProcessors();  private  int corePoolSize = 10;  private  int maximumPoolSize = cpuNums * 5;         @Bean(value = "httpApiThreadPool")    public ExecutorService buildHttpApiThreadPool(){     logger.info("TreadPoolConfig创建线程数:"+corePoolSize+",最大线程数:"+maximumPoolSize);        ExecutorService pool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(100),new ThreadFactoryBuilder().setNameFormat("PROS-%d").build());         return pool ; } }

使用方法

   //注入    @Resource private TreadPoolConfig treadPoolConfig;   //调用    public void test() {  treadPoolConfig.buildHttpApiThreadPool().execute(()->System.out.println("tre")); }

现在两种线程池的创建方法已经介绍完了。

springboot开启线程池

定义线程池

定义的位置,要在启动类的子包或者同级目录中

import lombok.Data;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;@Data@Configuration@EnableAsync //开启异步请求public class ThreadPoolConfig {      private static final int corePoolSize = 10;   // 核心线程数(默认线程数)    private static final int maxPoolSize = 100;   // 最大线程数    private static final int keepAliveTime = 10;  // 允许线程空闲时间(单位:默认为秒)    private static final int queueCapacity = 500; // 缓冲队列数        @Bean("taskExecutor")    public ThreadPoolTaskExecutor taskExecutor(){        ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();        pool.setThreadNamePrefix("--------------全局线程池-----------------");        pool.setCorePoolSize(corePoolSize);        pool.setMaxPoolSize(maxPoolSize);        pool.seTKEepAliveSeconds(keepAliveTime);        pool.setQueueCapacity(queueCapacity);        // 直接在execute方法的调用线程中运行        pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());        // 初始化        pool.initialize();        return pool;    }}

使用

直接在需要异步执行的方法上加注解

@Async("taskExecutor")

以上是“springboot如何创建线程池”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: springboot如何创建线程池

本文链接: https://www.lsjlt.com/news/303061.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot如何创建线程池
    这篇文章主要介绍springboot如何创建线程池,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot创建线程池两种方式1.使用static代码块创建这样的方式创建的好处是当代码用到线程池的时候才会初始...
    99+
    2023-06-22
  • SpringBoot 项目中创建线程池
     前言: 前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了 后面就想到了线程池ThreadPoolExecu...
    99+
    2024-04-02
  • Android如何创建线程池
    在Android中,可以使用`ThreadPoolExecutor`类来创建线程池。下面是创建线程池的步骤:1. 导入所需的类:``...
    99+
    2023-09-12
    Android
  • Java线程池如何创建
    本文小编为大家详细介绍“Java线程池如何创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java线程池如何创建”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。线程池的好处可以实现线程的复用,避免重新创建线程和...
    99+
    2023-06-29
  • Java如何手动创建线程池
    目录如何手动创建线程池构造器队列饱和策略示例源码分析线程池工具类实现线程的三种方式使用ThreadPoolExecutor编写线程池工具类如何手动创建线程池 jdk提供了一个通过Th...
    99+
    2024-04-02
  • Springboot 配置线程池创建线程及配置 @Async 异步操作线程池详解
    目录前言一、创建一个Springboot Web项目二、新建ThreadPoolConfig三、新建controller测试四、演示结果前言 众所周知,创建显示线程和直接使用未配置的...
    99+
    2024-04-02
  • springboot创建线程池的两种方式小结
    目录springboot创建线程池两种方式1.使用static代码块创建2.使用@Configuration @bean注解,程序启动时创建springboot如何开启线程池定义线程...
    99+
    2024-04-02
  • Java线程池ThreadPoolExecutor怎么创建
    本篇内容介绍了“Java线程池ThreadPoolExecutor怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介ThreadPo...
    99+
    2023-07-02
  • SpringBoot实现线程池
    现在由于系统越来越复杂,导致很多接口速度变慢,这时候就会想到可以利用线程池来处理一些耗时并不影响系统的操作。 新建Spring Boot项目 1. ExecutorConfig....
    99+
    2024-04-02
  • Springboot自带线程池
    一: ThreadPoolTaskExecuto 1 ThreadPoolTaskExecutor线程池: ThreadPoolTaskExecutor是Spring基于java本身的线程池ThreadPoolExecutor做的二次封装,...
    99+
    2023-09-14
    spring boot java spring
  • SpringBoot线程池和Java线程池怎么使用
    这篇文章主要介绍“SpringBoot线程池和Java线程池怎么使用”,在日常操作中,相信很多人在SpringBoot线程池和Java线程池怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringB...
    99+
    2023-07-06
  • 线程池的创建方式有哪些
    这篇文章主要讲解了“线程池的创建方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“线程池的创建方式有哪些”吧!什么是线程池线程池(ThreadPool...
    99+
    2024-04-02
  • Springboot 如何使用@Async整合线程池
    Springboot @Async整合线程池 开篇咱们先来聊聊线程池这个概念,或者说为什么要使用线程池;简言之,充分利用cpu资源,提高程序执行时间,但是相反,线程池异常提示、主线程...
    99+
    2024-04-02
  • Java多线程 - 创建线程池的方法 - ThreadPoolExecutor和Executors
    文章目录 线程池(重点)线程池介绍实现线程池的方式方式一: 实现类ThreadPoolExecutorThreadPoolExecutor构造器的参数线程池处理Runnable任务线程池处理Callable任务 方式二: ...
    99+
    2023-08-30
    java jvm 开发语言
  • 为什么要禁用Executors创建线程池
    本篇内容介绍了“为什么要禁用Executors创建线程池”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程...
    99+
    2024-04-02
  • java线程池创建的方法是什么
    在Java中,线程池可以使用以下两种方法来创建: 使用`Executors`类中的静态方法来创建线程池: ExecutorSer...
    99+
    2023-10-25
    java
  • Python线程池thread pool怎么创建使用
    本文小编为大家详细介绍“Python线程池thread pool怎么创建使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python线程池thread pool怎么创建使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-06-30
  • Android创建线程池的方式有哪些
    在Android中,可以使用以下方式创建线程池:1. 使用ThreadPoolExecutor类:可以通过new ThreadPoo...
    99+
    2023-10-18
    Android
  • 如何用_beginthreadex()创建线程
    这篇文章主要讲解了“如何用_beginthreadex()创建线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用_beginthreadex()创建线程”吧!一、使用_beginthr...
    99+
    2023-06-22
  • android如何创建子线程
    在Android中创建子线程有多种方式,以下是其中两种常用的方式:1. 使用Thread类创建子线程:```javanew Thre...
    99+
    2023-08-12
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作