Scatter-gather in Mule sends a request message concurrently to multiple targets. It then collects the responses from all routes and aggregates them into a single message. To implement scatter-gather, a flow references two sub-flows that will run concurrently. The payloads from both sub-flows are then merged at the end by the scatter-gather processor.