private void addMemberEvent(MemberEvent ev) {
    if (SYNC_EVENTS) {
      handleMemberEvent(ev);
    } else {
      stopper.checkCancelInProgress(null);
      boolean interrupted = Thread.interrupted();
      try {
        membershipEventQueue.put(ev);
      } catch (InterruptedException ex) {
        interrupted = true;
        stopper.checkCancelInProgress(ex);
        handleMemberEvent(ev); // FIXME why???
      } finally {
        if (interrupted) {
          Thread.currentThread().interrupt();
        }
      }
    }
  }
This thread processes member events as they occur.

@see ClusterDistributionManager.MemberCrashedEvent
@see ClusterDistributionManager.MemberJoinedEvent
@see ClusterDistributionManager.MemberDepartedEvent
geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java