@Override
    public void run() {
      while (!shutDown) {
        SystemFailure.checkFailure();
        try {
          SnapshotResultMessage msg = agent.snapshotResults.take();
          agent.callCacheCollector(msg.getSnapshot(), msg.getSender(), msg.getSnapshotId());
          Thread.yield();
        } catch (InterruptedException e) {
          // We'll just exit, no need to reset interrupt bit.
          if (shutDown) {
            break;
          }
          logger.warn("Ignoring strange interrupt", e);
        } catch (Exception ex) {
          logger.fatal(ex.getMessage(), ex);
        }
      }
    }
A daemon thread that reads {@link SnapshotResultMessage}s from a queue and invokes the
{@code CacheCollector} accordingly.
geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java