diff --git a/src/main/java/com/serliunx/statemanagement/machine/AbstractStateMachine.java b/src/main/java/com/serliunx/statemanagement/machine/AbstractStateMachine.java index 6f79c0d..e3acb31 100644 --- a/src/main/java/com/serliunx/statemanagement/machine/AbstractStateMachine.java +++ b/src/main/java/com/serliunx/statemanagement/machine/AbstractStateMachine.java @@ -188,9 +188,19 @@ public abstract class AbstractStateMachine extends AbstractStateManager im @Override public void publish(Object event) { List>> consumers = context.eventRegistries.get(event); - if (consumers != null) { - consumers.forEach(consumer -> consumer.accept(this)); + if (consumers == null || + 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