code: private void startExecutingUpdates() throws ClosedException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "startExecutingUpdates");
  
      // swap the enqueuedUnits and executingUnits.
      ArrayList temp = executingUnits;
      executingUnits = enqueuedUnits;
      enqueuedUnits = temp;
      enqueuedUnits.clear();
      // enqueuedUnits is now ready to accept AsyncUpdates in enqueueWork()
  
      executing = true;
      try
      {
        LocalTransaction tran = tranManager.createLocalTransaction(false);
        ExecutionThread thread = new ExecutionThread(executingUnits, tran);
        mp.startNewSystemThread(thread);
      }
      catch (InterruptedException e)
      {
        // this object cannot recover from this exception since we don't know how much work the ExecutionThread
        // has done. should not occur!
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.impl.store.AsyncUpdateThread.startExecutingUpdates",
          "1:222:1.28",
          this);
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "startExecutingUpdates", e);
  
        closed = true;
        throw new ClosedException(e.getMessage());
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "startExecutingUpdates");
  
    }
docs: Internal method. Should be called from within a synchronized block.