public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(
            Iterable<T> iterable,
            BT procedure,
            int minForkSize,
            int taskCount)
    {
        ParallelIterate.forEachWithIndex(
                iterable,
                new PassThruObjectIntProcedureFactory<BT>(procedure),
                new PassThruCombiner<BT>(),
                minForkSize,
                taskCount);
    }
public static < T , BT extends ObjectIntProcedure < ? super T > > void forEachWithIndex ( Iterable < T > iterable , BT procedure , int minForkSize , int taskCount ) { ParallelIterate . forEachWithIndex ( iterable , new PassThruObjectIntProcedureFactory < BT > ( procedure ) , new PassThruCombiner < BT > ( ) , minForkSize , taskCount ) ; }
Iterate over the collection specified in parallel batches.  The
ObjectIntProcedure used must be stateless, or use concurrent aware objects if they are to be shared.  The
specified minimum fork size and task count are used instead of the default values.

@param minForkSize Only run in parallel if input collection is longer than this.
@param taskCount   How many parallel tasks to submit to the executor.
@see #forEachWithIndex(Iterable, ObjectIntProcedure)