关于线程池在项目中的如何使用

本文介绍了线程池在项目中的常见应用场景,如数据处理、大文件下载和优惠券发放等,重点讲解了如何在Spring框架中使用ThreadPoolTaskExecutor,以及其与JDKThreadPoolExecutor的区别。
摘要由CSDN通过智能技术生成

大家都知道 线程池一般的使用场景 一般都是常用的几种 

1.后台系统的数据的批量导入

特别是数据量大的情况下,可以使用线程池,多线程的数据处理

2.大文件下载

可以使用线程池实现多线程下载

3.详情动态页面静态化

详情页的静态页面的生成,可以使用线程池

4.优惠券的系统发放

可能存在海量用户,使用线程池完成多线程的发放

分片算法,计算任务 每个任务处理1000个数据

通过翻阅资料可知 线程池最大的作用 如下

1,降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗
2,提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行
3,提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控

因此我们才会在项目中使用到 线程池技术 在实际的项目中如何去使用呢 

1.进行数据库查询时且数据量大又耗时 考虑到用分页 查询数据 比如数据有10000条的时候 利用了 线程池 技术 

1.引入jar包

2.创建连接池配置类    

里面的参数可以根据实际情况进行自行设定

@Configuration
@EnableAsync
public class AsyncConfiguration {

    @Bean
    public ThreadPoolTaskExecutor executor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //配置核心线程数
        executor.setCorePoolSize(50);
        //配置最大线程数
        executor.setMaxPoolSize(100);
        //配置队列大小
        executor.setQueueCapacity(1000);
        //线程的名称前缀
        executor.setKeepAliveSeconds(60);
        executor.setThreadNamePrefix("xxxx");
        //等待所有任务结束后再关闭线程池
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        //执行初始化
        executor.initialize();
        return executor;
    }
3.启动类上添加@EnableAsync 

ThreadPoolTaskExecutor和ThreadPoolExecutor的区别

ThreadPoolTaskExecutor是spring core包中提供的,而ThreadPoolExecutor是JDK中的JUC包下提供的,并且ThreadPoolTaskExecutor是在ThreadPoolExecutor的基础上进一步进行了封装处理,因此我们项目中直接使用ThreadPoolTaskExecutor即可。

具体介绍 请看原文链接:https://blog.csdn.net/lingerlan510/article/details/122322588

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值