spring 事件机制 异步操作
程序员文章站
2022-07-12 18:32:54
...
1 spring 事件机制的好处:解耦合,对于一对多的操作,可以接触代码耦合
2 针对于要解耦的操作,很多都可以异步操作,主线程响应时间会变快,spring提供的事件机制默认是同步的,
@Override public void multicastEvent(final ApplicationEvent event, ResolvableType eventType) { ResolvableType type = (eventType != null ? eventType : resolveDefaultEventType(event)); for (final ApplicationListener<?> listener : getApplicationListeners(event, type)) { Executor executor = getTaskExecutor(); //线程池存在,走异步操作 if (executor != null) { executor.execute(new Runnable() { @Override public void run() { invokeListener(listener, event); } }); } else { invokeListener(listener, event); } } }
如果想要实现异步操作,需要在发布者中提供ApplicationEventMulticaster的实现,并注入一个线程池,这样就可以实现异步;
坏处: 所有的操作都会异步
3 异步的另外一种实现:@Async 可以在事件发布方法上,使用此注解,让事件发布和订阅者处理整个过程是异步的,使用异步注解最好自定义一个线程池,并定义超过线程池容量后的排斥机制,防止线程丢失
推荐阅读
-
Spring事件监听机制
-
spring-boot-2.0.3不一样系列之番外篇 - springboot事件机制,绝对有值得你看的地方
-
spring — spring中的事件驱动机制解析
-
JQuery操作样式以及JQuery事件机制
-
【Android 异步操作】Handler 机制 ( Android 提供的 Handler 源码解析 | Handler 构造与消息分发 | MessageQueue 消息队列相关方法 )
-
一次业务代码重构的总结:spring中事件驱动机制
-
一次业务代码重构的总结:spring中事件驱动机制
-
spring 事件机制 异步操作
-
Spring5源码 - 10 Spring事件监听机制_应用篇
-
spring事件通知机制