Fork and join
A thick bar in a UML activity diagram is a fork or a join. With one arrow in and several out it is a fork, which splits the flow into parallel flows; with several arrows in and one out it is a join, which waits for all of them before the flow goes on.
How to read it
UML 2.5.1 describes the symbol for fork and join nodes as simply a line segment, in any orientation; course notes and the specification's own state machine notation draw it as a short heavy bar. A fork has one incoming arrow and starts every outgoing path at once: whatever arrives is offered to all of them. The University of Pretoria's notes describe the paths after a fork as running at the same time, in programming terms as separate threads. A join synchronizes: unless it is labelled otherwise, it waits until a flow has arrived on every incoming arrow, then sends one flow on. A label such as {joinSpec = A and B} beside a join gives a different condition. One bar can be a join and a fork at once, with several arrows in and several out.
Also searched as: fork and join symbol, fork node, join node, synchronization bar, uml fork and join.
Fork or decision?
A fork starts every outgoing path; a decision diamond picks one of them. The specification's example has a fork after Fill Order passing control to both Ship Order and Send Invoice. Scott Ambler, in The Object Primer, marks a decision drawn where a fork was meant as a common mistake in one of his own diagrams.
Join or merge?
A join waits for all its incoming flows; a merge, drawn as a diamond, passes each one on as it arrives. Ambler's description of a join: "All flows going into the join must reach it before processing may continue."
In state machine diagrams
Fork and join pseudostates use the same short heavy bar. A fork splits one transition into transitions to states in parallel (orthogonal) regions of a composite state; a join brings them back, and all its incoming transitions have to complete before the one going out can fire.
Read next
- Next in UML diagram symbolsClassA rectangle divided into compartments is a class in a UML class diagram. The top compartment holds the class's name, the next its attributes, and the one below that its operations.
- In BPMN symbolsParallel gatewayA point where the process splits into paths that all run, or where parallel paths wait for one another. The parallel gateway is a diamond with a plus sign inside.
More UML diagram symbols
The same shape elsewhere
Browse symbols drawn with arrows or lines.
Sources
- OMG Unified Modeling Language (OMG UML), Version 2.5.1, OMG document formal/17-12-05, December 2017, Object Management Group, 15.3.3.3–4; 15.3.4.2 Notation; 15.3.5.2; 14.2.3.7; 14.2.4.6
- UML Activity Diagrams: An Agile Introduction, Scott W. Ambler, excerpted from The Object Primer, 3rd edition, chapter 9, Agile Modeling (Ambysoft)
- COS121 Lecture Notes, Chapter 16: UML Activity Diagrams, Linda Marshall and Vreda Pieterse, 2015, University of Pretoria, Department of Computer Science, 16.2.5 Parallel flows
Researched, edited and approved by Rory Hansen before publishing. Last reviewed October 9, 2026. How we research
Added .