public static <T, BT extends Procedure<? super T>> void forEachOn( T[] array, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) { if (ArrayIterate.notEmpty(array)) { int size = array.length; if (size < minForkSize) { BT procedure = procedureFactory.create(); ArrayIterate.forEach(array, procedure); ParallelArrayIterate.combineSingleProcedure(combiner, procedure); } else { int threadCount = Math.min(size, taskCount); new ArrayProcedureFJTaskRunner<>(combiner, threadCount).executeAndCombine(executor, procedureFactory, array); } } }
public static <T, BT extends Procedure<? super T>> void forEachOn( T[] array, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) { if (ArrayIterate.notEmpty(array)) { int size = array.length; if (size < minForkSize) { BT procedure = procedureFactory.create(); ArrayIterate.forEach(array, procedure); ParallelArrayIterate.combineSingleProcedure(combiner, procedure); } else { int threadCount = Math.min(size, taskCount); new ArrayProcedureFJTaskRunner<>(combiner, threadCount).executeAndCombine(executor, procedureFactory, array); } } }
public static <T, BT extends Procedure<? super T>> void forEachOn( T[] array, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) { if (ArrayIterate.notEmpty(array)) { int size = array.length; if (size < minForkSize) { BT procedure = procedureFactory.create(); ArrayIterate.forEach(array, procedure); ParallelArrayIterate.combineSingleProcedure(combiner, procedure); } else { int threadCount = Math.min(size, taskCount); new ArrayProcedureFJTaskRunner<>(combiner, threadCount).executeAndCombine(executor, procedureFactory, array); } } }