Java 异步编程框架有哪些推荐

Python015

Java 异步编程框架有哪些推荐,第1张

前端框架的话EXTJS跟 JQuery 都支持异步通信,服务端的话JAVA1.7版本或更高版本的并发库有支持异步调用的API,若是远程调用,也就是系统之间调用的话,web service的任何一个框架,比如CXF都支持异步调用,因为使用的是消息传递机制进行通信,若你想用支持远程过程调用(RPC)的框架的话,那就只能面向多线程编程才能实现异步调用

在SpringBoot的日常开发中,一般都是同步调用的。但经常有特殊业务需要做异步来处理,例如:注册新用户,送100个积分,或下单成功,发送push消息等等。

就拿注册新用户为什么要异步处理?

在SpringBoot中使用异步调用是很简单的,只需要使用@Async注解即可实现方法的异步调用。

采用@EnableAsync来开启异步任务支持,另外需要加入@Configuration来把当前类加入springIOC容器中。

增加一个service类,用来做积分处理。

@Async添加在方法上,代表该方法为异步处理。

@Async注解,在默认情况下用的是SimpleAsyncTaskExecutor线程池,该线程池不是真正意义上的线程池,因为线程不重用,每次调用都会新建一条线程。

可以通过控制台日志输出查看,每次打印的线程名都是[task-1]、[task-2]、[task-3]、[task-4].....递增的。

@Async注解异步框架提供多种线程

SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。

SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方。

ConcurrentTaskExecutor:Executor的适配类,不推荐使用。如果ThreadPoolTaskExecutor不满足要求时,才用考虑使用这个类。

ThreadPoolTaskScheduler:可以使用cron表达式。

ThreadPoolTaskExecutor :最常使用,推荐。 其实质是对java.util.concurrent.ThreadPoolExecutor的包装。