code: public static <T> Stream<T> parallelConcat(final Iterator<? extends T>[] a, final int readThreadNum, final int queueSize) {
          if (N.isNullOrEmpty(a)) {
              return empty();
          }
  
          return parallelConcatt(N.asList(a), readThreadNum, queueSize);
      }
docs: Returns a Stream with elements from a temporary queue which is filled by reading the elements from the specified iterators in parallel.
  
  Put the stream in try-catch to stop the back-end reading thread if error happens
  <br />
  <code>
  try (Stream<Integer> stream = Stream.parallelConcat(a,b, ...)) {
  stream.forEach(N::println);
  }
  </code>
  
  @param a
  @param readThreadNum - count of threads used to read elements from iterator to queue. Default value is min(8, a.length)
  @param queueSize Default value is N.min(128, a.length * 16)
  @return