protected void handleOrDeferViewEvent(MembershipView<ID> viewArg) {
    if (isJoining) {
      // bug #44373 - queue all view messages while joining.
      // This is done under the latestViewLock, but we can't block here because
      // we're sitting in the UDP reader thread.
      synchronized (startupLock) {
        startupMessages.add(new StartupEvent<>(viewArg));
        return;
      }
    }
    if (!processingEvents) {
      synchronized (startupLock) {
        if (!startupMessagesDrained) {
          startupMessages.add(new StartupEvent<>(viewArg));
          return;
        }
      }
    }

    viewExecutor.submit(() -> processView(viewArg));
  }
Process a new view object, or place on the startup queue

@param viewArg the new view
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java