files = Collections.synchronizedList(files);
File root = new File(rootFolder);
int producerThreadAmount = maxNumberOfThreads/2;
ExecutorService executorService = Executors.newFixedThreadPool(producerThreadAmount);
executorService.execute(new DirectoryScanner(root, executorService, queue));
int consumerThreadAmount = maxNumberOfThreads/2 + maxNumberOfThreads%2;
ExecutorService fileParserService = Executors.newFixedThreadPool(consumerThreadAmount);
List<Future<?>> futures = new ArrayList<>();
for (int i = 0; i < consumerThreadAmount; i++) {