public synchronized boolean removeAndReturnIfAllFinished(Collection<String> finishedSplitIds) {
    if (splits == null) {
      return true;
    }
    if (CollectionUtil.isNullOrEmpty(finishedSplitIds)) {
      return unfinishedCount == 0;
    }

    finishedSplitIds.forEach(
        (p) -> {
          Boolean finished = this.splits.get(p);
          if (finished == null || finished) {
            return;
          }
          unfinishedCount--;
          this.splits.put(p, true);
          LOGGER.debug("finish split:{} at {}", p, LocalDateTime.now());
        });
    if (unfinishedCount == 0) {
      LOGGER.info("finish all splits at {}", LocalDateTime.now());
      if (metricGroup != null) {
        metricGroup.gauge(TEMPORAL_TABLE_INITIALIZATION_END_TIMESTAMP, System::currentTimeMillis);
      }
      return true;
    }
    return false;
  }
Remove finished splits.

@return True if all splits are finished, otherwise false.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/hybrid/split/TemporalJoinSplits.java