feat: 状态机事件触发现可异步执行.

This commit is contained in:
2025-02-19 14:27:32 +08:00
parent 101d440510
commit f7e4400e37

View File

@@ -188,9 +188,19 @@ public abstract class AbstractStateMachine<S> extends AbstractStateManager<S> im
@Override @Override
public void publish(Object event) { public void publish(Object event) {
List<Consumer<StateMachine<S>>> consumers = context.eventRegistries.get(event); List<Consumer<StateMachine<S>>> consumers = context.eventRegistries.get(event);
if (consumers != null) { if (consumers == null ||
consumers.forEach(consumer -> consumer.accept(this)); consumers.isEmpty()) {
return;
} }
final Executor executor = context.executor;
final boolean async = context.async != null && context.async && executor != null;
consumers.forEach(consumer -> {
if (async)
executor.execute(() -> consumer.accept(this));
else
consumer.accept(this);
});
} }
@Override @Override