状态图
状态图是一种用于计算机科学和相关领域描述系统行为的图。状态图要求描述的系统由有限数量的状态组成。
语法:
stateDiagram-v2
[*] --> Still
Still --> [*]
Still --> Moving:push
Moving --> Still:摩擦
Moving --> Crash:速度过快
Crash --> [*]
stateDiagram-v2
[*] --> Still
Still --> [*]
Still --> Moving:push
Moving --> Still:摩擦
Moving --> Crash:速度过快
Crash --> [*]
在状态图中,展示了系统有那些状态,以及状态之间相互转换的。 上面的示例图显示了 Still、Moving
和 Crash
三种状态。 可以将Still
状态 更改为 Moving
。 也可以将Moving
状态更改回Still
或Crash
。 但无法从Still
过度到Crash
状态。
- 状态
可以通过多种方式声明一个状态。 最简单的方法是状态定义是通过 id 。
stateDiagram-v2
id
stateDiagram-v2
id
定义状态的另一种方法是,状态id后接冒号和描述。
stateDiagram-v2
S:开始
R:运行
W:等待
S-->R:start()
R-->W:wait()
W-->R:notify(),nofityAll()
stateDiagram-v2
S:开始
R:运行
W:等待
S-->R:start()
R-->W:wait()
W-->R:notify(),nofityAll()
id:des :状态id:状态详细
- 过渡:状态转换
当一种状态进入另一种状态时,通过过渡转换。 这使用文本箭头-->
表示。
stateDiagram-v2
状态1 --> 状态2
stateDiagram-v2
状态1 --> 状态2
可以向过渡中添加文本。描述它代表什么。
stateDiagram-v2
new-->Runable:start()
stateDiagram-v2
new-->Runable:start()
- 开始和结束
有两种特殊状态指示图,开始和停止。 可以用 [*]
语法表示开始或停止状态。
stateDiagram-v2
[*] --> 运行
s1 --> [*]
stateDiagram-v2
s1:运行
[*] --> s1
s1 --> [*]
例子:
Java线程状态图:
stateDiagram-v2
New-->Runnable:start()
Runnable-->Waiting:wait()
Waiting-->Runnable:notify(),notifyAll()
TimedWaiting-->Runnable:sleep()结束
Runnable-->TimedWaiting:sleep()开始
Blocked-->Runnable:synchronized
Runnable-->Blocked:synchronized
Runnable-->Terminated:run()结束
stateDiagram-v2
New-->Runnable:start()
Runnable-->Waiting:wait()
Waiting-->Runnable:notify(),notifyAll()
TimedWaiting-->Runnable:sleep()结束
Runnable-->TimedWaiting:sleep()开始
Blocked-->Runnable:synchronized
Runnable-->Blocked:synchronized
Runnable-->Terminated:run()结束
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。