Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Thread::join()メソッドの使い方

joinメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

joinメソッドは、呼び出し元のスレッドが、指定したスレッド(このメソッドを呼び出したThreadオブジェクト)の処理が完了するまで実行を停止し、その終了を待機するメソッドです。システム開発において、複数の処理を同時に実行する並行処理は効率を高めますが、特定の子スレッドが完了した後に親スレッドが次の処理に進む必要がある場面が頻繁に発生します。例えば、子スレッドで時間のかかる計算を行い、その結果を親スレッドで利用する場合などです。

このメソッドを呼び出すと、現在のスレッドは、対象のスレッドが終了するまで一時的に実行を中断します。これにより、処理の順序を厳密に制御し、スレッド間でデータの一貫性を保つことが可能になります。

オプションでタイムアウト時間を秒数で指定することもできます。タイムアウト時間を指定した場合、指定した時間が経過しても対象のスレッドが終了しない場合、joinメソッドは待機を中断し、nilを返します。このとき、対象のスレッドは実行を継続します。タイムアウトを指定しない場合、対象のスレッドが終了するまで無期限に待機し、そのスレッドオブジェクト自身を返します。これにより、デッドロックの回避や、プログラムの応答性確保にも役立ちます。

構文(syntax)

1t = Thread.new { sleep 0.1 }
2t.join

引数(parameters)

limit = nil

  • limit = nil: 待機する最大時間を秒単位で指定します。nil の場合は、スレッドが終了するまで無期限に待機します。

戻り値(return)

Thread

Threadオブジェクトを返します。これは、joinメソッドを呼び出したスレッドが、引数で指定されたスレッドの終了を待機した後に、その引数で指定されたスレッド自身を指します。

関連コンテンツ

関連プログラミング言語