private void stopAsyncFlusher() {
    stoppingFlusher = true;
    do {
      // Need to keep looping as long as we have more threads
      // that are already pending a put on the asyncQueue.
      // New threads will fail because stoppingFlusher has been set.
      // See bug 41141.
      forceFlush();
    } while (pendingAsyncEnqueue.get() > 0);
    synchronized (getAsyncMonitor()) {
      stopFlusher = true;
      getAsyncMonitor().notifyAll();
    }
    while (!flusherThreadTerminated) {
      try {
        flusherThread.join(100);
      } catch (InterruptedException ie) {
        Thread.currentThread().interrupt();
        getCache().getCancelCriterion().checkCancelInProgress(ie);
      }
    }
  }
How many threads are waiting to do a put on asyncQueue?
geode-core/src/main/java/org/apache/geode/internal/cache/DiskStoreImpl.java