TL;DR
タスクごとに 1 つのプロセスを生成し(fork)、それらのタスクがすべて完了するのを待ってから(join)後続の処理を行う並列処理のモデル。
仕組み
処理をタスクに分け、タスクごとにプロセスを生成して並列に実行する。後続の処理は、すべてのタスクが完了するまで始まらない。最終的な結果を得るためにすべてのタスクの完了を待つ、同期的な処理が前提になる。
注意点
Go の Fan-In pattern や Fan-Out pattern と混同しやすい。Fork-Join model はすべてのタスクの完了を待つ。一方、Fan-In / Fan-Out は非同期に処理を行い、必要に応じて結果を集約できるので、より柔軟に設計できる。
自分の理解
Fan-In / Fan-Out はデザインパターンなので、実現方法がより具体的である。