code: @Override
    public boolean runInThread(JobRunShell runnable) {
  
      if (runnable == null) {
        return false;
      }
  
      synchronized (nextRunnableLock) {
        handoffPending = true;
  
        // Wait until a worker thread is available
        while ((availWorkers.size() < 1) && !isShutdown) {
          try {
            nextRunnableLock.wait(500);
          } catch (InterruptedException ignore) {
          }
        }
  
        if (!isShutdown) {
          WorkerThread wt = availWorkers.removeFirst();
          busyWorkers.add(wt);
          wt.run(runnable);
        } else {
          // If the thread pool is going down, execute the Runnable
          // within a new additional worker thread (no thread from the pool).
          WorkerThread wt =
              new WorkerThread(
                  this, threadGroup, "WorkerThread-LastJob", prio, isMakeThreadsDaemons(), runnable);
          busyWorkers.add(wt);
          workers.add(wt);
          wt.start();
        }
        nextRunnableLock.notifyAll();
        handoffPending = false;
      }
  
      return true;
    }
docs: Run the given <code>Runnable</code> object in the next available <code>Thread</code>. If while
  waiting the thread pool is asked to shut down, the Runnable is executed immediately within a
  new additional thread.
  
  @param runnable the <code>Runnable</code> to be added.