文章目录前言一、ThreadPoolExecutor 类二、Java线程池核心参数三、执行流程四、拒绝策略4.1AbortPolicy 策略4.2CallerRunsPolicy 策略4.3DiscardOldestPolicy策略4.4DiscardPolicy策略总结 前言回想之前我们所学的数据库连接池,其基本原理是在内部对象池中维护一定数量的数据库连接,避免了频繁的建立、关闭连接,极大地提            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-26 09:03:53
                            
                                54阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            java多线程系列文章:java多线程(一):synchronized 对象锁和类锁的区别java多线程(二): wait()、sleep()、 join()和yield()区别java多线程(三):lock方式实现线程同步机制1.为什么要使用线程池按我的理解是为了更好的管理线程,减少系统资源的消耗,因为每次创建和销毁一个线程都是要消耗系统资源的,而线程池可以对已有的线程进行复用,而当线程处于空闲            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-25 16:34:25
                            
                                0阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            异步方法注解@Async在SpringBoot中进行异步处理,可以使用异步注解@Async和@EnableAsync。@Async注解表示异步,如:@Async("asyncServiceExecutor"),后面的参数asyncServiceExecutor对应于自定义的线程池配置类(在以下例子中为ExecutorConfig) 中的线程池方法名如果不写后面的参数,直接用@Async,则是使用默            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-13 00:03:12
                            
                                132阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Spring Boot 默认 MySQL 线程池详解
在现代的 Java Web 开发中,Spring Boot 是一个不可或缺的框架,它简化了配置并加快了开发速度。在与数据库交互时,连接池的使用尤其重要,因为它能够提高数据库操作的效率。本文将探讨 Spring Boot 中默认使用的 MySQL 线程池,重点包括它的配置与使用方式,并附带相关示例代码。
## 什么是连接池?
连接池是一            
                
         
            
            
            
            **线程池的底层:**是使用一个阻塞队列将线程存放进去,使用的时候调用阻塞队列中的线程; 阻塞队列: LinkedBlockingQueue,底层是一个链表,空参构造默认队列容器是Integer类型的最大值; SynchronousQueue,是一个不存储元素的阻塞队列,当有消费者和生产者连接的时候,才能够使用线程。 ArrayBlockingQuene,底层是一个数组的阻塞队列常用的线程池:(工            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-17 09:42:40
                            
                                30阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简介其实也不用简介了吧,线程池这个太熟悉了,无非就是七个参数和运行过程,这个都说烂了,就略过吧。四种线程池newFixedThreadPool(int nThreads) 固定线程池,线程数量是固定的,队列使用的是链表阻塞队列(LinkedBlockingQueue),队列是无限长的。newCachedThreadPool() 缓存线程池,核心线程数为0,最大线程数为Integer.MAX_VAL            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-23 09:20:32
                            
                                206阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            作者 |  红无酒伤1. @Async可以开启异步,但是要在 main 中EnableAsync2.@Async既可以注解在方法上,也可以注解到类上3.使用@Async时,请注意一定要对应bean name,否则或调用系统默认的SampleTaskExecutor,容易造成OOM4.本人使用的SpringBoot 2.3.4 ,默认值 maxPoolSize = 2147483647,queue            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-05 10:13:05
                            
                                129阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Java 5 开始,Java 提供了自己的线程池。线程池就是一个线程的容器,每次只执行额定数量的线程。 java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。它很灵活,但使用起来也比较复杂,本文就对其做一个介绍。首先是构造函数。以最简单的构造函数为例:[java]
 public ThreadPoolExecutor(   
             i            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-27 09:37:12
                            
                                139阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            应用场景:在java web开发中,有些接口处理的任务量非常大;而这些处理结果又不需要实时返回,那么我们线程异步的去做这些操作。Spring为任务调度和异步方法提供了专有的注解解决方案。可以在方法上设置@Async注解,使方法被异步调用。调用者会在调用方法之后立即返回,而被调用方法的则执行是交给Spring的TaskExecutor来完成执行。所以被注解的方法调用时,会在新的线程中执行,而调用他的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-12 15:09:34
                            
                                47阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Spring 异步注解 @Async 与线程池配置使用@Async注解,在默认情况下用的是SimpleAsyncTaskExecutor线程池,该线程池不是真正意义上的线程池,使用此线程池无法实现线程重用,每次调用都会新建一条线程。若系统中不断的创建线程,最终会导致系统占用内存过高,引发OutOfMemoryError错误SimpleAsyncTaskExecutor 源码解析(省略一部分代码)p            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-09 14:40:28
                            
                                525阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             目录一、简介1.1 概述1.2 功能1.2.1 常用方法1.2.2 异步操作二、应用场景2.1 结果转换2.2 结果消费2.3 结果组合2.4 任务交互 一、简介1.1 概述CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-27 11:30:41
                            
                                934阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            我之前直接使用 spring-boot-starter-mail 来发邮件,结果在邮件量多的时候,系统被严重拖慢,并且响应不过来,所以如果你的邮件量比较多,可以这样设计:1.单独创建一个SpringBoot的项目分布式来发送邮件。2.发送邮件时要使用异步方式,如果我们使用的是SpringBoot的@Async,底层已经帮我们解决了线程池的问题,在西方伯后面会有关于SpringBoot@Async的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-18 11:40:52
                            
                                59阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Android中的线程池线程池有以下三个优点:(1)重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。  (2)能有效控制线程的最大并发数,避免大量的线程之间的相互抢占资源而导致的阻塞现象。  (3)能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。Android中的线程池的概念来源于Java中的Executor。Executor是个接口,真正的线程池实现为Threa            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-28 17:14:09
                            
                                225阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            线程池实现源码:1)源码截图2)流程示意主要参数介绍:1、corePoolSize :线程池中保持的最少线程数量,即使这些线程处理空闲状态,他们也不会被销毁,只有设置了allowCoreThreadTimeOut=true时才会销毁核心线程。2、maximumPoolSize :即线程池最大允许的全部线程的数量。根据上述流程图的示意,一个任务提交后,当且仅当队列已满、且线程总数没有超出maximu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-21 22:19:51
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录1. LinkedBlockingQueue 简介2. LinkedBlockingQueue 的关键属性3. LinkedBlockingQueue 的元素存取流程3.1 添加元素3.2 取出元素 1. LinkedBlockingQueue 简介LinkedBlockingQueue 是线程池默认使用的任务队列,为了满足多线程环境下元素出入队列的安全性,其主要有以下特点:
Linke            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 20:30:14
                            
                                369阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            背景最近小伙伴解决了一个工单,描述为“手工推送案件无法推,提示token失效”,当前工单状态为待关闭,解决方案为“东软接口不稳定造成的,东软的接口恢复正常后,问题解决”,然后找现场让他们关闭工单,现场反馈:今天现场又出现相同的问题了!!!依然是token失效,工单关不了了。过程确认问题应用及版本让对方把错误截图发了一下,发现好像不是卷宗自己的应用,跟卷宗团队小伙伴确认了一下,这是个定制的小工具。要            
                
         
            
            
            
            ## Rxjava默认线程池
Rxjava是一个基于观察者模式的异步编程库,它提供了丰富的操作符来处理异步事件流。在使用Rxjava时,我们需要注意线程的调度,这样可以避免阻塞主线程,提高应用的性能和用户体验。Rxjava提供了默认的线程池来处理任务的调度,本文将介绍Rxjava的默认线程池并提供相应的代码示例。
### Rxjava的默认线程池
Rxjava的默认线程池通过`Schedul            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-24 12:28:16
                            
                                118阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. TaskExecutorSpring异步线程池的接口类,其实质是java.util.concurrent.ExecutorSpring 已经实现的异常线程池:1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方3. Co            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-22 10:09:31
                            
                                84阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、创建异步任务1. supplyAsyncsupplyAsync是创建带有返回值的异步任务。它有如下两个方法,一个是使用默认线程池(ForkJoinPool.commonPool())的方法,一个是带有自定义线程池的重载方法// 带返回值异步请求,默认线程池
public static <U> CompletableFuture<U> supplyAsync(Suppli            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-30 22:18:14
                            
                                308阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              对于经常创建和销毁,使用量特别大的资源,比如并发情况下的线程,对性能影响非常大。所以我们一般提前创建好多个线程,放入线程池中,使用时直接获取,使用完放入池中。可以避免频繁创建销毁,实现重复利用。好处:提高响应速度(减少创建新线程的时间)降低资源消耗(重复利用线程池中的线程,不需要每次都创建)便于线程管理 
  线程池大小最大线程数…对于Java多线程不是很熟悉的可以先去一篇看懂Java多线程J            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-18 09:21:02
                            
                                110阅读