"Efficiency" could mean many things. For Ruby < 1.9, the green threads mean that you won't get as much concurrency as you might think out of threads, so using multiple script instances would be the best way to minimize total real time from start to finish.
As to creating them, here is the Pickaxe book example of downloading pages "in parallel":
require 'net/http'
pages = %w( www.rubycentral.com
www.awl.com
www.pragmaticprogrammer.com
)
threads = []
for page in pages
threads << Thread.new(page) { |myPage|
h = Net::HTTP.new(myPage, 80)
puts "Fetching: #{myPage}"
resp, data = h.get('/', nil )
puts "Got #{myPage}: #{resp.message}"
}
end
threads.each { |aThread| aThread.join }