joinでスレッド待ち

RubyのThread.startはスレッドオブジェクトを返すので、それとjoinすれば起動したスレッドを待つことになります。

Thread.start {
    10.times {
        p Thread.current
    }
}.join

Thread.start {
    10.times {
        p Thread.current
    }
}.join

実行結果。

#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x29470c0 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>
#<Thread:0x2946f40 run>