@Override
  public void execute(Runnable runnable) {
    if (runnable == null) {
      throw new NullPointerException();
    }

    boolean[] hasWaiterMarker = new boolean[1];

    if ((_runState == _RUNNING) && _taskQueue.offer(runnable, hasWaiterMarker)) {

      if (_runState != _RUNNING) {
        if (_taskQueue.remove(runnable)) {
          _rejectedExecutionHandler.rejectedExecution(runnable, this);
        }

        return;
      }

      if (!hasWaiterMarker[0]) {
        _addWorkerThread();
      }

      return;
    }

    _rejectedExecutionHandler.rejectedExecution(runnable, this);
  }