成功解决@Async注解不生效的问题,异步任务处理问题

news2024/11/19 4:15:38

 首先,有这样一个异步监听方法

然后配置好了异步线程池 

package com.fdw.study.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;


@ComponentScan(basePackages = {"com.fdw.study.event", "com.fdw.study.eventListener"})
@Configuration
public class EventConfig {

    //自定义线程池
    @Bean
    public ThreadPoolTaskExecutor asyncThreadPoolExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        // 核心线程数
        taskExecutor.setCorePoolSize(4);
        // 线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程
        taskExecutor.setMaxPoolSize(20);
        // 缓存队列
        taskExecutor.setQueueCapacity(50);
        // 空闲时间,当超过了核心线程数之外的线程在空闲时间到达之后会被销毁
        taskExecutor.setKeepAliveSeconds(200);
        // 异步方法内部线程名称
        taskExecutor.setThreadNamePrefix("fdw-async-executor-");

        /**
         * 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略
         * 通常有以下四种策略:
         * ThreadPoolExecutor.AbortPolicy:丢弃任务,抛出RejectedExecutionException异常。
         * ThreadPoolExecutor.DiscardPolicy:丢弃任务,但不抛出异常。
         * ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试重新执行任务。
         * ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功。
         */
        taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        taskExecutor.initialize();
        return taskExecutor;
    }

}

执行测试

package com.fdw.study.test;

import com.fdw.study.config.EventConfig;
import com.fdw.study.event.UserChangePasswordEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class EventTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class);
        context.publishEvent(new UserChangePasswordEvent("145623"));

    }
}

 发现还是走的main线程,没有实现异步

原因:后来发现是配置类缺少了@EnableAsync注解,加上后再测试

现在才是真的异步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

维修派单系统好用吗?如何实现数字化后勤管理?

在当今社会,各种设备和设施的正常运转对于单位和组织来说至关重要。然而,由于各种因素的影响,设备和设施在日常运行过程中难免会出现故障。这时,高效的维修服务就显得尤为重要。而“的修”维修派单系统,就是一种专为维…

Java卷上天,可以转行干什么?

小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久&am…

怎么压缩pdf文件?分享缩小pdf文件的简单方法

在我们的日常生活和工作中,往往需要处理大量的PDF文件,而很多时候这些文件的大小会成为传输和存储的难题。为了解决这个问题,下面我们将介绍三种方法来压缩PDF文件,一起来看看吧~ 一、嗨格式压缩大师 首先,最简单也是…

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法: 可以看到如果没配置basePackages,会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去

山西电力市场日前价格预测【2023-10-08】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-08)山西电力市场全天平均日前电价为258.40元/MWh。其中,最高日前电价为496.19元/MWh,预计出现在18:45。最低日前电价为0.00元/MWh,预计出…

TouchDesigner专题_LeapMotion安装(win10系统)

如果你已经走到了其他教程的最后一步,出现报错 Connection failed.Ensure the device is connected and the correct version (4.1) of Leap Motion driver is installed 直接跳到最后一节就能解决 一、LeapMotion硬件 硬件部分很简单,就和手机数据线…

文件服务器审核

数据是所有组织的命脉,保护存储此重要资产的存储库对于防止不必要的暴露、盗窃和丢失至关重要,管理员和数据所有者应增强其文件服务器安全性、满足合规性要求等。 文件服务器审核工具 使用 DataSecurity Plus 无缝监控、警报和报告跨 Windows 文件服务…

深圳市重点实验室申报标准-华夏泰科

深圳市重点实验室,作为中国科技创新的引领者,扮演着关键的角色,旨在推动前沿科学研究和技术创新。申请重点实验室,可为企业带来莫大的荣誉并可为企业及机构提供宝贵的资源和支持,更可获得丰厚的现金支持。那么如何申请…

京东数据分析平台:2023年8月京东奶粉行业品牌销售排行榜

鲸参谋监测的京东平台8月份奶粉市场销售数据已出炉! 鲸参谋数据显示,8月份京东平台上奶粉的销售量将近700万件,环比增长约15%,同比则下滑约19%;销售额将近23亿元,环比增长约4%,同比则下滑约3%。…

HiveServer2 Service Crashes(hiveServer2 服务崩溃)

Troubleshooting Hive | 5.9.x | Cloudera Documentation 原因:别人用的都好好的,我的集群为什么会崩溃? 1.hive分区表太多(这里没有说具体数量。) 2.并发连接太多,我记的以前默认是200个连接 3.复杂的hive查询访问表的的分区…

【Vue面试题一】、说说你对 Vue 的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗&#xff…

Apple developer证书、标识符和描述文件

Apple developer证书、标识符和描述文件 一、准备1,开发者账号2,CSR文件3,DeviceID 二、过程1,证书(Certificates)2、标识符(Identifiers)3、描述文件(Profiles&#xff…

C语言之动态内存管理篇(1)

目录 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 今天收假了,抓紧时间写几篇博客。我又来赶进度了。今天我们来讲解动态内存管理。🆗🆗 为什么存在动态内存分配 假设我们去实现一个…

Iris for Mac:轻松实现高质量录屏的最佳选择

随着数字化时代的到来,录屏软件已经成为了许多人必备的工具之一。无论是教育、工作还是娱乐,录屏软件都可以帮助我们将重要的操作过程或内容记录下来,并与他人分享。而对于Mac用户来说,一款简单易用且功能强大的录屏软件尤为重要。…

划片机:半导体生产的必备设备

划片机是半导体加工行业中的重要设备,主要用于将晶圆切割成晶片颗粒,为后道工序粘片做好准备。随着国内半导体生产能力的提高,划片机市场的需求也在逐渐增加。 在市场定位上,划片机可以应用于半导体芯片和其他微电子器件的制造过程…

015 Spring Boot网上商城(仿天猫)

一、系统介绍 需求设计主要参考天猫商城的购物流程: 用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一&#xff0…

为什么公司里月薪八千的PLC工程师经常离职?

今日话题,为什么公司里月薪八千的PLC工程师经常离职?这个问题涉及到工程师的个人偏好和工作性质的不同。许多工程师更喜欢在一个稳定的地方工作,而不是经常出差。然而,也有一些工程师喜欢出差,他们更愿意在不同的现场工…

PMP认证,对项目经理有什么用?

PMP是什么?学什么? PMP是由美国项目管理协会(PMI)在全球范围内推出的针对项目经理的资格认证体系,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,其目的是为了给项目管理人员提供统一的行业标…

【Python_PySide2学习笔记(十七)】QPlainTextEdit末尾增加文本时设置文本颜色

QPlainTextEdit末尾增加文本时设置文本颜色 前言正文1、QPlainTextEdit末尾增加文本时设置文本颜色方法2、f_changeQPlainTextEditColor()方法调用前言 此篇文章中介绍PySide2中 QPlainTextEdit 多行文本框在末尾增加文本的同时设置文本颜色的方法,而对插入的文本进行区分,有…

设计模式13、模版方法模式 Template Method

解释说明:模版方法模式(Template Method Pattern)定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 抽象类(AbstractClass)&…