package com.constellio.model.services.batch.controller; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TaskList { private static final Logger LOGGER = LoggerFactory.getLogger(TaskList.class); private AtomicInteger totalTasksCount = new AtomicInteger(); private AtomicInteger finishedTasksCount = new AtomicInteger(); private ForkJoinPool pool; public TaskList(ForkJoinPool pool) { this.pool = pool; } void addRootTask(BatchProcessTask task) { totalTasksCount.incrementAndGet(); pool.execute(task); } void addSubTask(BatchProcessTask task) { totalTasksCount.incrementAndGet(); task.fork(); } void onTaskFinished() { finishedTasksCount.incrementAndGet(); logProgression(); } private void logProgression() { int totalTasksCountValue = totalTasksCount.get(); if (totalTasksCountValue > 5) { String progression = "Tasks progression : " + finishedTasksCount.get() + "/" + totalTasksCountValue; LOGGER.info(progression); } } }