如何在UML序列图中建模并行线程

18

我如何在序列图中建模两个并行线程对一个对象执行操作的过程?


2
两个线程需要两个生命线。考虑在目标对象上使用异步调用。 - xmojmr
1个回答

23
序列图中,生命线表示交互中的个体参与者。因此,在图表中,你共享的对象应该只出现一次。
你还需要用生命线来代表每个与你的共享对象交互的线程对象。它可以直接是线程实例,也可以是在两个线程的上下文中创建的多个对象。
但这还不够。原则上,与你的对象交互的顺序由消息的垂直顺序表示。那么如何显示交互可能同时发生?
为了表示并行性,你需要使用由运算符par引入的组合片段。在图形上(请参见链接),组合片段在序列图中表示为一个带有水平虚线分隔的方框区域,每个切片都对应于一个执行线程。

![enter image description here

注意:此示例显示了2个线程,但您可以通过添加更多水平虚线来添加更多线程。


嗯,那三个泛化关系是什么?为什么返回到右边后执行时间这么长啊? - qwerty_so
@qwerty_so确实。我用在线工具快速制作了一个简单的图表,只是为了说明“par”。幸运的是,我能找回这个图表并进行图形编辑。当然:同步消息使用普通箭头,返回消息使用虚线。但是在右侧,这些不是返回后非常长的激活,而是创建消息,尽管它具有完全不同的语义,看起来像是返回消息。 - Christophe
那个返回值当然是一个创造。现在剩下的都好了,这也很清楚 :-) - qwerty_so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接