专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
今天看啥  ›  专栏  ›  芋道源码

服务down机了,线程池中的数据如何保证不丢失?

芋道源码  · 公众号  · Java  · 2024-11-13 09:30
    

主要观点总结

本文主要介绍了线程池的概念、原理、存在的问题以及如何解决数据丢失的问题。包括线程池的作用、构造器参数、工作流程以及在实际应用中可能遇到的问题,如队列过大、线程太多和数据丢失等。同时,提供了如何通过提前做持久化来解决数据丢失问题的方案。

关键观点总结

关键观点1: 线程池的概念和作用

线程池是为了解决频繁创建和销毁线程的问题而引入的,通过复用已创建的线程降低资源消耗,提高响应速度,并对线程进行统一的管理。

关键观点2: 线程池的工作原理

线程池通过核心线程数、最大线程数、任务队列等参数来管理线程,当任务提交到线程池时,根据当前线程数和任务队列的情况来决定如何执行任务。

关键观点3: 线程池存在的问题

线程池存在的问题主要包括队列过大可能导致OOM问题,线程过多也可能导致OOM问题,以及服务重启导致的数据丢失问题。

关键观点4: 如何解决数据丢失问题

为了解决数据丢失问题,需要提前做持久化。即将任务数据先写入数据库,然后通过一个定时任务查询状态为待执行的任务,提交到线程池进行处理。处理成功后修改任务状态。如果线程池处理过程中服务down机,下一次定时任务执行时,会重新查询并处理那些未处理的任务。


文章预览

👉 这是一个或许对你有用 的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 「 芋道快速开发平台 」 知识星球。 下面是星球提供的部分资料:   《项目实战(视频)》 :从书中学,往事上 “练 ” 《互联网高频面试题》 :面朝简历学习,春暖花开 《架构 x 系统设计》 :摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》 :系统学习,互联网主流技术栈 《必读 Java 源码专栏》 :知其然,知其所以然 👉 这是一个或许对你有用的开源项目 国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。 功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能: Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览