private static int maxActiveCollect(int numTasks, int parallelism, boolean privatePool) {
Set<Integer> active = new HashSet<>();
AtomicInteger maxActive = new AtomicInteger();
Set<Integer> completed = ExecUtils.collectInParallel(numTasks, parallelism, privatePool, i -> {
synchronized (active) {
active.add(i);
maxActive.set(Math.max(maxActive.get(), active.size()));
}
sleepSeconds(1);
synchronized (active) {
active.remove(i);
}
return i;
}, Collectors.toSet());
assertEquals(numTasks, completed.size());
for (int i = 0; i < numTasks; i++) {
assertTrue(completed.contains(i));
}
return maxActive.get();
}