@Override public void run(){
  if (mDelay > 0) {
    try {
      Thread.sleep(mDelay);
    }
 catch (    InterruptedException e) {
      LogImpl.w(TAG,getName() + ": " + e.getMessage());
    }
  }
  if (mParentTask != null) {
synchronized (this) {
      try {
        wait();
      }
 catch (      InterruptedException e) {
        LogImpl.w(TAG,getName() + ": " + e.getMessage());
      }
    }
  }
  mStatus=Status.STATUS_EXECUTING;
  long startTime=System.currentTimeMillis();
  start();
  long endTime=System.currentTimeMillis();
  LogImpl.i(TAG,getName() + " runs " + (endTime - startTime));
  if (mDoneSignal != null) {
    mDoneSignal.countDown();
  }
  if (mChildTask != null) {
synchronized (mChildTask) {
      mChildTask.notify();
    }
  }
  mStatus=Status.STATUS_DONE;
}

@ Override public void run ( ) { if ( mDelay > 0 ) { try { Thread . sleep ( mDelay ) ; } catch ( InterruptedException e ) { LogImpl . w ( TAG , getName ( ) + ": " + e . getMessage ( ) ) ; } } if ( mParentTask != null ) { synchronized ( this ) { try { wait ( ) ; } catch ( InterruptedException e ) { LogImpl . w ( TAG , getName ( ) + ": " + e . getMessage ( ) ) ; } } } mStatus = Status . STATUS_EXECUTING ; long startTime = System . currentTimeMillis ( ) ; start ( ) ; long endTime = System . currentTimeMillis ( ) ; LogImpl . i ( TAG , getName ( ) + " runs " + ( endTime - startTime ) ) ; if ( mDoneSignal != null ) { mDoneSignal . countDown ( ) ; } if ( mChildTask != null ) { synchronized ( mChildTask ) { mChildTask . notify ( ) ; } } mStatus = Status . STATUS_DONE ; }
normally should not override it
