# This simple fact is what makes threads so powerful, and also what makes them # difficult to work with. I've already given you an idea of why threads are # good; here's a simple program to illustrate their difficulty. shared_array = Array.new 10.times.map do Thread.new do 1000.times do shared_array << nil end end end.each(&:join) # Here you can see that we have 10 * 10000 elements in array puts shared_array.size # Note that different ruby can show different result # GIL exist only in MRI ruby # $ ruby => 10000 # $ jruby => 7521 # $ rbx => 8541