code: @Override
      public final void initializeConsumers(final TaskListener finishedListener) {
          final TaskRunner taskRunner = getTaskRunner();
          final List<RowProcessingConsumer> configurableConsumers = getConsumers();
          final int numConfigurableConsumers = configurableConsumers.size();
          final JoinTaskListener initFinishedListener = new JoinTaskListener(numConfigurableConsumers, finishedListener);
          for (final RowProcessingConsumer consumer : configurableConsumers) {
              final TaskRunnable task = createInitTask(consumer, initFinishedListener);
              taskRunner.run(task);
          }
      }
docs: Initializes consumers of this {@link SourceTableRowProcessingPublisher}.
  
  This method will not initialize consumers containing
  {@link MultiStreamComponent}s. Ensure that
  {@link #initializeMultiStreamConsumers(Set)} is also invoked.
  
  Once consumers are initialized, row processing can begin, expected rows
  can be calculated and more.
  
  @param finishedListener