#!/usr/bin/env ruby require 'pry' class Test def initialize @result = [] threads = [] 10000.times do |number| while threads.size > 50 sleep 0.01 deleted = [] threads.delete_if { |thread| deleted << thread if not thread.alive? } deleted.each { |thread| thread.terminate; GC.start } end binding.pry if File.exist? 'test.pry' threads << Thread.new { mah_thread number } end threads.each { |thread| thread.join } binding.pry end def mah_thread number @result[number] = rand(100000) sleep rand(10)/10.0 end end Test.new