Thank you all, here's the version I got to work:

@@thr = ThreadGroup.new

class MyThreadClass
  def wakeUp
    @@thr.list.each {|myThread|
      myThread.run
    }
  end
end

server = TCPServer.new('127.0.0.1',5190)
while 
  myThreads = Thread.new(session = server.accept) {|mySession|
    begin
      #if trigger value is met
      alarmClock = MyThreadClass.new
      alarmClock.wakeUp

      while mySession
        #biz logic code
        sleep 45
      end
    ensure
      puts "leaving"
      mySession.close
      Thread.kill
    end    
  }

  @@thr.add(myThreads)     
end