public synchronized void start(final Collection<NamedTopology> initialTopologies) {
        log.info("Starting Streams with topologies: {}", initialTopologies);
        for (final NamedTopology topology : initialTopologies) {
            final AddNamedTopologyResult addNamedTopologyResult = addNamedTopology(topology);
            if (addNamedTopologyResult.all().isCompletedExceptionally()) {
                final StreamsException e = addNamedTopologyResult.exceptionNow();
                log.error("Failed to start Streams when adding topology " + topology.name() + " due to", e);
                throw e;
            }
        }
        super.start();
    }
Start up Streams with a collection of initial NamedTopologies (may be empty)

Note: this is synchronized to ensure that the application state cannot change while we add topologies
streams/src/main/java/org/apache/kafka/streams/processor/internals/namedtopology/KafkaStreamsNamedTopologyWrapper.java