I think, your script is missing Thread::join:

> domains = ['www.bim.com','www.bum.com','www.bam.com']
> ..
> def check (host,domain,timeout)
> puts "checking... #{host} -> #{domain}"
> timeout(timeout) do
>  ¨Âåçéî
> `/usr/bin/nslookup #{domain} #{host}`
>  ¨ÂåóãõÔéíåïõôººÅòòïò
>  ¨Âîä
> end
> end
>
> iplist.each { |host|
>  ¨Âèòåáäó ¼¼ Ôèòåáä®îå÷¨èïóô© üèïóôü
> domains.each do |domain|
>  ¨Âèåãë¨èïóô¬äïíáéî¬ôéíåïõô> end
>  ¨Â>

threads.each {|th|
  th.join
}

(Not tested.)

-Axel