private void startOrDisable(){
  Executor e;
  if ((e=executor) != null) {
    try {
      e.execute(new ConsumerTask<T>(this));
    }
 catch (    Throwable ex) {
      for (int c; ; ) {
        if ((c=ctl) == DISABLED || (c & ACTIVE) == 0)         break;
        if (U.compareAndSwapInt(this,CTL,c,c & ~ACTIVE)) {
          onError(ex);
          break;
        }
      }
    }
  }
}

private void startOrDisable ( ) { Executor e ; if ( ( e = executor ) != null ) { try { e . execute ( new ConsumerTask < T > ( this ) ) ; } catch ( Throwable ex ) { for ( int c ; ; ) { if ( ( c = ctl ) == DISABLED || ( c & ACTIVE ) == 0 ) break ; if ( U . compareAndSwapInt ( this , CTL , c , c & ~ ACTIVE ) ) { onError ( ex ) ; break ; } } } } }
tries to start consumer task upon a signal or request ; disables on failure .
