markdown mermaid状态图

状态图

状态图是一种用于计算机科学和相关领域描述系统行为的图。状态图要求描述的系统由有限数量的状态组成。

语法:

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、MovingCrash 三种状态。 可以将Still状态 更改为 Moving。 也可以将Moving状态更改回StillCrash。 但无法从Still过度到Crash 状态。

  1. 状态

可以通过多种方式声明一个状态。 最简单的方法是状态定义是通过 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:状态详细

如果状态比较长,并且要多次引用,可以用此种方式,可以减少敲打键盘的的次数

  1. 过渡:状态转换

当一种状态进入另一种状态时,通过过渡转换。 这使用文本箭头-->表示。

stateDiagram-v2
	状态1 --> 状态2
stateDiagram-v2 状态1 --> 状态2

可以向过渡中添加文本。描述它代表什么。

stateDiagram-v2
	new-->Runable:start()
stateDiagram-v2 new-->Runable:start()
  1. 开始和结束

有两种特殊状态指示图,开始和停止。 可以用 [*] 语法表示开始或停止状态。

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()结束

相关文章

markdown语法1、vscode预览md文件打开侧边预览按完Control+K...
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快...
这加粗样式里写自定义目录标题使用Markdown编辑器新的改变功...
Markdown基本语法标题字体分割线下划线列表列表无序列表使用...
MarkDown学习标题几级标题就加几个井号,最多支持到6级字体H...
markdown基本语法目录:文章目录markdown基本语法1.斜体和粗...