public void start(){
  if (dependencies.isEmpty()) {
    EXECUTOR.execute(makeWrapper());
  }
 else {
    boolean blocked=false;
synchronized (LOCK) {
      blocked=isBlockedByDependencies();
    }
    if (!blocked) {
      EXECUTOR.execute(makeWrapper());
    }
 else {
synchronized (LOCK) {
        queuedThreads.add(this);
      }
      taskQueued(this);
    }
  }
}

public void start ( ) { if ( dependencies . isEmpty ( ) ) { EXECUTOR . execute ( makeWrapper ( ) ) ; } else { boolean blocked = false ; synchronized ( LOCK ) { blocked = isBlockedByDependencies ( ) ; } if ( ! blocked ) { EXECUTOR . execute ( makeWrapper ( ) ) ; } else { synchronized ( LOCK ) { queuedThreads . add ( this ) ; } taskQueued ( this ) ; } } }
note that this method has nothing to do with thread . strart . it merely enqueues this runnable in the executor ' s queue .
