实际开发什么场景用到线程池_不看后悔的项目中线程池实际应用

前言:

最近在看线程池方面的内容,结合源码学习完其内部原理后,心想自己在项目中有实际使用过线程池吗?想了想,确实在项目中很多地方使用到了线程池;下面来简单聊下最近在日志方面中多线程的应用:

服务接口日志异步线程池化入库处理

定时任务中使用多线程进行日志清理

本文主线:

①、线程池基本原理解读;

②、线程池实际应用例子:

线程池应用 Demo 项目结构描述

服务接口日志异步线程池化入库处理

定时任务中使用多线程进行日志清理

线程池基本原理解读:

啥也不说,先贴一张脑图,通过脑图对线程池快速的进行了解;

除了看图外,也可以通过此文章《ava线程池实现原理及其在美团业务中的实践》对线程池进行详细的了解;

线程池实际应用例子:

下面就来聊聊最近在项目日志中线程池的应用;

线程池应用Demo项目描述:

上面说的两种日志方面线程池应用已经写好了Demo,是一个 SpringBoot 项目,项目结构如下图:

服务接口日志异步线程池化入库处理:

后台服务接口项目中,经常需要对接口的请求报文和响应报文日志做入库保存;

下面将通过对比 普通方式入库操作和线程池方式入库操作 ,来说说为什么线程池式入库更加优雅;

普通方式入库操作:

普通入库就是直接进行完业务逻辑处理并构建好响应后同时将日志进行入数据库,入库成功后再将响应返回;

流程图如下:

但是这样存在一个很大的弊端就是由于多了一次数据库操作(日志入库),进而可能会导致响应速度比较慢;

下面就聊聊怎么通过线程池对日志入库进行优化,提升接口的响应速度;

线程池方式入库操作:

线程池方式入库,可以将日志直接放入到队列中,然后就直接返回响应,最后使用线程池中的线程取出队列中的日志数据异步做入库操作;

流程图如下:

使用线程池方式,处理请求的主线程可以将日志放入到队列后,直接将响应返回,然后再使用线程池中的线程取出队列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值