当前位置: 首页 > backend >正文

【CouponHub项目开发】EasyExcel解析Excel并使用线程池异步执行和延时队列兜底

文章目录

    • 为什么使用Excel
    • 为什么使用线程池进行异步执行
    • 为什么使用延时队列进行兜底
    • 线程池的核心参数
    • 拒绝策略有哪些

为什么使用Excel

因为在特定电商场景下,可能会出现比如有的平台会根据用户的喜好从而生成一些用户画像,企业再从画像平台去获取特定喜好的用户,会得到一个Excel表格。

为什么使用线程池进行异步执行

因为如果表格的内容很多,百万级别的数据。那么如果是单线程运行情况下,会导致用户等待大量时间使用线程池异步执行则可以直接返回用户操作成功的响应,而真正的操作是交给后台线程异步执行的

为什么使用延时队列进行兜底

因为如果任务刚提交到线程池当中就宕机了,那么线程池当中的任务就不会执行了,为了解决这种情况,采用延时队列进行兜底。

在这里插入图片描述
首先定义EasyExcel中的行数监听器

在这里插入图片描述
创建优惠券分发任务,并将其存入数据库当中。
在这里插入图片描述
然后通过线程池去异步执行更新数据库当中优惠券分发任务的sendnum字段。
在这里插入图片描述
然后创建一个阻塞队列,然后基于这个阻塞队列创建一个延时队列
delayedQueue.offer(delayJsonObject, 20, TimeUnit.SECONDS);作用是:设置延时时间,到时间后将延时队列里的信息传到阻塞队列中,这也是为什么能从阻塞队列中获取delayJsonObject的原因

在这里插入图片描述
接着我们定义一个延时队列的消费者。他在项目运行时创建一个线程,去获取Redis当中的阻塞队列。然后不断循环去获取阻塞队列中的delayJSON,然后再根据delayJSON中的id去查询数据库,判断数据库中这个优惠券分发任务的分发数量是否为0.如果为0说明线程池没有去执行 refreshCouponTaskSendNum方法,然后让该线程去执行。

线程池的核心参数

1.核心线程数
2.最大线程数
3.工作队列
4.keepAliveTime
5.keepAliveTime的单位unit
6.ThreadFactory
7.handler拒绝策略

拒绝策略有哪些

1.CallerRunsPolicy使用线程池的调用者所在的线程去执行被拒绝的任务
2.AbortPolicy直接抛出异常
3.DiscardPolicy直接拒绝,不做任何处理
4.DiscardOldestPolicy抛弃最老的,然后执行该任务

http://www.xdnf.cn/news/19952.html

相关文章:

  • Java GcExcel V8.2 新版本:效率升级与功能突破
  • 5.7 点云公开数据集——3D形状分类/部件分割
  • 企业发完年终奖后,是员工跳槽的高峰期?
  • 《嵌入式硬件(二):中断》
  • 数据可视化大屏精选开源项目
  • 【SuperSocket 】SuperSocket 中自定义 Session
  • [光学原理与应用-402]:设计 - 深紫外皮秒脉冲激光器 - 元件 - AOM零级光与一级光:深紫外皮秒激光器中的核心光学特性与系统应用
  • 决策树算法详解:从原理到实战
  • RabbitMq如何实现幂等性
  • 力扣字符串刷题-六道题记录-1
  • ECMAScript (5)ES6前端开发核心:国际化与格式化、内存管理与性能
  • Lucene 8.7.0 版本的索引文件格式
  • uniapp vue页面传参到webview.nvue页面的html或者另一vue中
  • 架构-亿级流量性能调优实践
  • 【ICCV 2025 顶会论文】,新突破!卷积化自注意力 ConvAttn 模块,即插即用,显著降低计算量和内存开销。
  • 阿里云轻量应用服务器部署-WooCommerce
  • 剧本杀APP系统开发:引领娱乐行业新潮流的科技力量
  • 【RNN-LSTM-GRU】第三篇 LSTM门控机制详解:告别梯度消失,让神经网络拥有长期记忆
  • 【已更新文章+代码】2025数学建模国赛A题思路代码文章高教社杯全国大学生数学建模-烟幕干扰弹的投放策略
  • 达梦数据库-字典缓冲区 (二)-v2
  • void*指针类型转换笔记
  • C++ const以及相关关键字
  • Ubuntu 25.04搭建hadoop3.4.1集群详细教程
  • Access开发导出PDF的N种姿势,你get了吗?
  • 开源本地LLM推理引擎(Cortex AI)
  • OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析
  • 使用国外网络的核心问题有哪些?
  • 基于 epoll 的高并发服务器原理与实现(对比 select 和 poll)
  • 十七、单线程 Web 服务器
  • (自用)PowerShell常用命令自查文档