越水です。

私も似たようなことを質問したことがあって、そのときいただいた答えは
joinを使うというものでした:

#!/ruby/ruby

require "thread"

def s(a)
  sleep(a)
  print a," sec sleep\t",Time.now,"\t",Thread.current,"\n"
end

t = []

print Time.now,"\n"

for i in 1..5
  t.push Thread.start {
    loop do
      s(i)
    end
  }
end

t.each do |th|
  p th
end

while not t.empty?
  t.shift.join
end

# 越水
# greentea / fa2.so-net.ne.jp