class Concurrent::RubyThreadPoolExecutor::Worker

def create_worker(queue, pool, idletime)

def create_worker(queue, pool, idletime)
  Thread.new(queue, pool, idletime) do |my_queue, my_pool, my_idletime|
    last_message = Concurrent.monotonic_time
    catch(:stop) do
      loop do
        case message = my_queue.pop
        when :idle_test
          if (Concurrent.monotonic_time - last_message) > my_idletime
            my_pool.remove_busy_worker(self)
            throw :stop
          else
            my_pool.worker_not_old_enough(self)
          end
        when :stop
          my_pool.remove_busy_worker(self)
          throw :stop
        else
          task, args = message
          run_task my_pool, task, args
          last_message = Concurrent.monotonic_time
          my_pool.ready_worker(self)
        end
      end
    end
  end
end