定义一个配置类

这里一个默认的线程池,一个起了自己名字的线程池。(可以配置多个线程池)

import org.springframework.aop.interceptor.AsyncExecutionAspectSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;/*** 线程池配置、启用异步* */
@EnableAsync(proxyTargetClass = true)
@Configuration
public class AsycTaskExecutorConfig {@Bean(name = AsyncExecutionAspectSupport.DEFAULT_TASK_EXECUTOR_BEAN_NAME)public TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();//核心线程池大小executor.setCorePoolSize(10);//最大线程数executor.setMaxPoolSize(20);//队列容量executor.setQueueCapacity(200);//活跃时间executor.setKeepAliveSeconds(60);//线程名字前缀executor.setThreadNamePrefix("taskExecutor-");executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}@Bean(name = "testEx")public TaskExecutor testEx() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 设置核心线程数executor.setCorePoolSize(5);// 设置最大线程数executor.setMaxPoolSize(10);// 设置队列容量executor.setQueueCapacity(20);// 设置线程活跃时间(秒)executor.setKeepAliveSeconds(60);// 设置默认线程名称executor.setThreadNamePrefix("test-");// 设置拒绝策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 等待所有任务结束后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);return executor;}
}

使用一下看看吧

    @RequestMapping("/testAnys")public void testAnys(){System.out.println("testAnys");testAnysMethod();System.out.println("1");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("2");testAnysMethod2();System.out.println("3");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}}@Async//这个使用默认的线程池public void testAnysMethod(){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("async");}@Async("testEx")//这个使用自己命名的线程池public void testAnysMethod2(){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("testEx");}

运行

testAnys
async
1
2
testEx
3

spring框架如何调用异步方法?快进来学学吧相关推荐

  1. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  2. 使用Spring框架实现数据库事务处理

    企业级应用系统在更新数据库数据时,一般都采用数据库事务处理,以确保数据库数据的一致性.本文主要讨论在Spring框架中如何使用数据库事务处理更新数据库数据.通过本课的学习,可以达到如下目标. ● 了解 ...

  3. 在Spring框架中使用SQL存储过程

    Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...

  4. Spring框架XML配置文件使用外部Bean属性注入

    Spring框架XML配置文件使用外部Bean属性注入 (1)创建两个类service类和dao类 (2)在service中调用dao里面的方法 (3)使用Spring框架进行调用 (4)创建测试类 ...

  5. Spring框架的自动装配

    一.表现机制 当某个变量需要被赋值时,可以使用特定的语法,让Spring尝试从容器中找到合适的值,并自动完成赋值 最典型的表现就是添加@Autowired注解,Spring就会尝试从容器中找到合适的值 ...

  6. 使用Spring框架实现远程服务暴露与调用

    一.前言 Spring框架提供了通过HTTP协议实现远程调用的方式,具体是调用方使用HttpInvokerProxyFactoryBean生成一个代理对象,通过代理对象远程通过http服务调用服务提供 ...

  7. SAP BOPF和Spring框架里加了注解的控制器是如何被调用的

    BOPF的这些determination,其方法不需要application developer自己去调用,而是被BOPF框架通过调用interface method的方式被调用. Spring MV ...

  8. 系统开发系列 之MyEclipse创建WebService详细教程和调用教程(spring框架+maven+CXF框架)

    1 回顾 [系统开发系列 之MyEclipse创建WebService详细教程和调用教程]介绍了使用JWS实现WebService接口的发布和调用,主要涉及的点有: (1)MyEclipse点击Fil ...

  9. Redis:Spring框架下Redis的配置和调用,xml文件中redis的配置,redisTemplate的使用和jedis的使用

    老规矩了,再次重复一遍,配置XML文件为Spring框架所属,所使用的框架是Spring,非SpringBoot!!! Spring框架整合Redis并且使用 1.配置文件 <bean clas ...

最新文章

  1. 机器学习需要理解的五个基本概念
  2. 网站优化之网站为什么要做301定向跳转?
  3. 盘点Git的那些冷门玩法
  4. 编写properties文件的Eclipse插件
  5. python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示
  6. 在C#中从Keras.NET开始——训练您的第一个模型
  7. 持续集成环境(Hudson)搭建
  8. TensorFlow是什么
  9. linux重定向文件容加时间,[单选] linux系统,把当前日期重定向到/tmp/date文件中,并不想覆盖原来的内容,下面正确的操作是()。...
  10. C++构造函数的default和delete
  11. 风暴英雄修改服务器,风暴英雄已支持全球各服务器切换 国服不包含在内
  12. 宏碁暗影骑士设置u盘启动教程
  13. DSAC、DSAC++、DSAC*
  14. MTP 模式 pc端文件和文件管理其中的不同步
  15. Understand Selections in D3
  16. 什么是数据指标管理,如何建立指标管理体系
  17. 外星人游戏本哪一款好?追求完美体验首选X系列
  18. Hadoop Join性能优化
  19. 【EI检索】第二届传感器与信息技术国际学术会议(ICSI2022)
  20. 劈尖干涉公式_劈尖干涉 牛顿环教案 干涉条纹间距公式

热门文章

  1. weblogic 负载均衡搭建
  2. linux内核earlyprink,内核启动参数机制学习笔记
  3. 虚拟机的分类_「面试必备」Java虚拟机知识点复习手册(下)
  4. 网速、宽带速率运营商说法与用户说法转换
  5. matlab的开方算法_正确的「记事本」打开方式:能渲染3D图像,还能玩贪吃蛇
  6. linux下如何屏蔽代码,linux c 怎么屏蔽信号 使用sigprocmask命令
  7. 矩阵理论及其应用_有限元分析ansys理论与应用视频第三课 绪论:直接法矩阵求解...
  8. 三点弯曲弹性模量怎么计算公式_?怎么计算弯管的尺寸和弯管的张力
  9. python如何进行大到小排序_Python3基础 list sort 从小(大)到大(小)排序
  10. debug工具_Jupyter官方神器:可视化 Debug 工具!