状态机

本文详细介绍了状态机的概念,通过线程生命周期举例展示了如何构建状态迁移图。接着,分析了Java实现状态机的源码,包括工具类、业务逻辑接口和测试代码。文章最后对不足之处进行了总结,提出线程安全问题及其解决方案,并简述了C++实现状态机的方法。
摘要由CSDN通过智能技术生成

一:概念

描述一个对象从一个状态,经过一个事件驱动转变为另一个状态的过程,叫做一次状态迁移,一个对象所具备的所有状态迁移过程叫做状态机。

二:实例

利用astah软件做出一个状态机(状态迁移图),以线程的生命周期为例:

做成这个图的过程简单概括下是以下几点

1:确认对象的初始状态

2:明确对象所具有的所有状态

3:找到对象会经历的所有事件    ps:不是所有的事件都会让对象产生状态迁移,一个特定对象只会响应某些事件,进而发生状态改变

4:从初始状态开始,将每一个事件作用在对象上,会发生状态迁移时,连接两个状态,并在连接线上标注出事件,一个状态经历过所有事件,在再另一个状态上作用所有事件,当每个状态都经历过事件,并正确连接上了线,标注出了事件,则完成了状态机的绘制。

三:java实现的源码分析

1:stateMachine工具类代码 

package stateMachine;

import java.util.HashMap;
import java.util.Map;

class StateMachine
{
    int curState;     //当前状态
    int preState;     //上一次状态
    /*
     * 两个map储存一次状态迁移的过程
     * state 0-------事件A------->state 1
     * 表示state的数据类型是int,事件是String
     * 典型的内存模型是
     * state 0-------事件B------->state 2
     * state 0-------事件C------->st
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值