• 2025-01-08如何设计一个能根据任务优先级来执行的线程池
    不同的线程池会选用不同的阻塞队列作为任务队列,比如FixedThreadPool使用的是LinkedBlockingQueue(有界队列),默认构造器初始的队列长度为Integer.MAX_VALUE,由于队列永远不会被放满,因此FixedThreadPool最多只能创建核心线程数的线程。假如需要实现一个优先级任务线程池的话,那可
  • 2025-01-06《深入理解Mybatis原理》MyBatis的sqlSession执行流程
    sqlSessionFactory与SqlSession正如其名,Sqlsession对应着一次数据库会话。由于数据库会话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(当然并不是说在Sqlsession里只能执行一次sql,你可以执行多次,当一旦关闭了Sqlsession就需要重新
  • 2025-01-05大文件下载防内存溢出简单实现
    摘要:利用StreamingResponseBody来防止内存溢出,实现大文件下载。一、配置异步请求超时时间1/**2*@Description:异步请求配置类3*@Date:Createdin17:192025/1/54*@Author:Cenobitor5*@ModifiedBy:6*@since0.1.07*/8@Configuration9
  • 2025-01-05Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
    在MyBatis中,Executor 是执行SQL语句的核心组件。MyBatis提供了多种 Executor 类型,每种类型有不同的行为和用途。以下是MyBatis中常见的 Executor 类型及其区别:1. SIMPLE 执行器描述:这是最基本的执行器,每次执行SQL语句时都会创建一个新的预编译语句(PreparedSt
  • 2025-01-01Java,Future,Callable和Executor
    系列文章目录Java中Future,Callable和Executor学习入门使用文章目录系列文章目录前言一、Future,Callable和Executor是什么?二、使用示例1.编写获取数组最大值方法2.使用Executor和future总结前言如果需要多线程执行某个任务,又希望分给线程的任务能够按照自己指
  • 2024-12-29Java多线程实战避坑指南:从入门到生产实践
    在微服务架构下,多线程编程已经成为Java开发者的必备技能。本文将帮助你掌握多线程开发的核心知识,避开常见陷阱。一、为什么要深入理解多线程?1.1现实问题接口响应慢CPU利用率低内存泄漏频发死锁难以排查并发BUG难复现1.2业务场景批量数据处理并行任务执行
  • 2024-12-29Executor 执行器是如何工作的?
     作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源
  • 2024-12-28【Java 线程池】详解
    线程池详解在现代的Java并发编程领域,线程池扮演着至关重要的角色。它不仅能高效地管理线程资源,避免频繁创建和销毁线程带来的性能开销,还能提升系统整体的并发处理能力与稳定性。接下来,我们将深入剖析线程池的方方面面,包括其原理、核心组成部分、使用方法以及在实际项目
  • 2024-12-28记手动粗浅管理多线程的工具类
    首先新建一个线程池管理工具类ThreadPoolManagerUtilimportlombok.extern.slf4j.Slf4j;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.ThreadFactory;importjava.util.concurrent.ThreadP
  • 2024-12-26复现线程池引发的生产环境BUG
    引言随着多线程和并发处理需求的增加,线程池成为了提升系统性能的重要工具。Java提供了强大的ThreadPoolExecutor类,能够高效地管理线程池,减少线程创建和销毁的开销。然而,当线程池达到其最大容量时,如何优雅地处理被拒绝的任务就成为了一个关键问题。本文将深入探讨Java
  • 2024-12-26Java面试要点99 - Java线程池的关闭过程
    文章目录引言一、线程池的关闭方式1.1shutdown方法1.2shutdownNow方法二、关闭过程中的状态转换2.1线程池状态监控2.2优雅关闭的实现三、任务处理与异常处理3.1关闭时的任务处理3.2关闭过程中的异常处理总结引言线程池的关闭是Java并发编程中的重要环节,
  • 2024-12-23Spark任务的执⾏流程
    Spark任务的执行流程涉及多个组件和步骤的协同工作,以下是其详细的执行流程:提交任务编写应用程序:用户首先使用Spark支持的编程语言(如Scala、Java、Python等)编写Spark应用程序,在应用程序中定义计算逻辑,包括创建RDD(弹性分布式数据集)、对RDD进行转换和行动操作等。提
  • 2024-12-17Spark优化----Spark 性能调优
    目录常规性能调优常规性能调优一:最优资源配置常规性能调优二:RDD 优化RDD 复用RDD 持久化RDD 尽可能早的filter 操作常规性能调优三:并行度调节常规性能调优四:广播大变量常规性能调优五:Kryo 序列化常规性能调优六:调节本地化等待时长算子调优算子调优一:mapPar
  • 2024-12-16springboot线程池配置
    /***@Author:shmc*@Description:线程池配置*/@EnableAsync//启用Spring的异步方法执行功能@ConfigurationpublicclassExecutorConfig{/***corePoolSize:核心线程数,也是线程池中常驻的线程数,线程池初始化时默认是没有线程的,当任务来临时才开始创
  • 2024-12-13线程池 坑中之王 !
    前言线程池是Java中处理多线程的强大工具,但它不仅仅是“直接用就完事”的工具。很多小伙伴在用线程池时,因为配置不当或忽略细节,踩过许多坑。今天跟大家一起聊聊线程池中容易踩的10个坑,以及如何避免这些坑,希望对你会有所帮助。1.直接使用Executors创建线程池许多初学者
  • 2024-12-07xxl-job,任务调度中心快速上手
    前言XXL-JOB是一个可以在WEB界面配置执行定时任务中间件,支持分布式服务调用,XXL-JOB自身也可以部署多个节点组成集群,本身是一个基于SpringBoot的JavaWEB程序,我们可以通过下载GitHub源码进行部署。一、XXL-JOB安装教程进入xxl-job官网,里面有更详细的教程XXL-JOB官网1、下载
  • 2024-11-28线程池的创建及工作原理和Executor框架
    目录一、什么是线程池:二、创建线程池:三、线程池执行策略:四、如何合理的配置线程池的大小?五、Executor框架:六、Java线程模型:Java线程与操作系统线程的关系:七、ThreadPoolTaskExecutor:⭐八、真实项目的使用详解:九、线程池监控:一、什么是线程池:线程池主要是为了解决
  • 2024-11-25XXL-JOB及Cron表达式
    目录一、XXL-JOB简述二、搭建xxl-Job2.1执行初始化sql脚本2.2引入依赖2.3xxl-job配置2.4执行器组件2.5开发任务2.6访问调度中心三、Cron表达式一、XXL-JOB简述XXL-JOB是一个分布式任务调度平台;核心设计目标是学习简单、开发迅速、轻量级、易扩展部分特性:1
  • 2024-11-24【大数据学习 | Spark-Core】广播变量和累加器
    1.共享变量Spark两种共享变量:广播变量(broadcastvariable)与累加器(accumulator)。累加器用来对信息进行聚合,相当于mapreduce中的counter;而广播变量用来高效分发较大的对象,相当于semijoin中的DistributedCache。共享变量出现的原因:我们传递给Spark的函数,如map(),或者filter()
  • 2024-11-24Day37--error和exception
    Day37--error和exceptionException异常Error错误目录:1、什么是异常2、异常体系结构3、Java异常处理机制4、处理异常5、自定义异常6、总结什么是异常实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求,你的