diff --git a/src/main/java/com/serliunx/statemanagement/machine/ConcurrentStateMachine.java b/src/main/java/com/serliunx/statemanagement/machine/ConcurrentStateMachine.java
new file mode 100644
index 0000000..2c40e51
--- /dev/null
+++ b/src/main/java/com/serliunx/statemanagement/machine/ConcurrentStateMachine.java
@@ -0,0 +1,11 @@
+package com.serliunx.statemanagement.machine;
+
+/**
+ * @author SerLiunx
+ * @version 1.0.0
+ * @since 2025/2/6
+ */
+public interface ConcurrentStateMachine extends StateMachine {
+
+ boolean compareAndSet(S expectedValue, S newValue);
+}
diff --git a/src/main/java/com/serliunx/statemanagement/machine/DefaultConcurrentStateMachine.java b/src/main/java/com/serliunx/statemanagement/machine/DefaultConcurrentStateMachine.java
new file mode 100644
index 0000000..8e5bbcd
--- /dev/null
+++ b/src/main/java/com/serliunx/statemanagement/machine/DefaultConcurrentStateMachine.java
@@ -0,0 +1,132 @@
+package com.serliunx.statemanagement.machine;
+
+import com.serliunx.statemanagement.machine.handler.StateHandlerWrapper;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
+
+/**
+ * @author SerLiunx
+ * @version 1.0.0
+ * @since 2025/2/6
+ */
+public class DefaultConcurrentStateMachine extends AbstractStateMachine implements ConcurrentStateMachine {
+
+ /**
+ * 当前状态
+ */
+ private final AtomicInteger index = new AtomicInteger(0);
+
+ DefaultConcurrentStateMachine(List stateList,
+ Map>> entryHandlers,
+ Map>> leaveHandlers,
+ Map>> exchangeHandlers,
+ Map