返回顶部
首页 > 资讯 > 精选 >浅谈Spring @Async异步线程池用法总结
  • 105
分享到

浅谈Spring @Async异步线程池用法总结

asyncspring线程池 2023-05-31 09:05:49 105人浏览 安东尼
摘要

本文介绍了spring @Async异步线程池用法总结,分享给大家,希望对大家有帮助1. TaskExecutorspring异步线程池的接口类,其实质是Java.util.concurrent.ExecutorSpring 已经实现的异常

本文介绍了spring @Async异步线程池用法总结,分享给大家,希望对大家有帮助

1. TaskExecutor

spring异步线程池的接口类,其实质是Java.util.concurrent.Executor

Spring 已经实现的异常线程池:

SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。
2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方
3. ConcurrentTaskExecutor:Executor的适配类,不推荐使用。如果ThreadPoolTaskExecutor不满足要求时,才用考虑使用这个类
4. SimpleThreadPoolTaskExecutor:是Quartz的SimpleThreadPool的类。线程池同时被quartz和非quartz使用,才需要使用此类
5. ThreadPoolTaskExecutor :最常使用,推荐。 其实质是对java.util.concurrent.ThreadPoolExecutor的包装

2. @Async

spring对过@Async定义异步任务

异步的方法有3种

最简单的异步调用,返回值为void
2. 带参数的异步调用 异步方法可以传入参数
3. 异常调用返回Future

详细见代码:

@Componentpublic class AsyncDemo {  private static final Logger log = LoggerFactory.getLogger(AsyncDemo.class);    @Async  public void asyncInvokeSimplest() {    log.info("asyncSimplest");  }    @Async  public void asyncInvokeWithParameter(String s) {    log.info("asyncInvokeWithParameter, parementer={}", s);  }    @Async  public Future<String> asyncInvokeReturnFuture(int i) {    log.info("asyncInvokeReturnFuture, parementer={}", i);    Future<String> future;    try {      Thread.sleep(1000 * 1);      future = new AsyncResult<String>("success:" + i);    } catch (InterruptedException e) {      future = new AsyncResult<String>("error");    }    return future;  }}

--结束END--

本文标题: 浅谈Spring @Async异步线程池用法总结

本文链接: https://lsjlt.com/news/224632.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作