package com.zenika.java7.forkjoin;
import java.io.File;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.concurrent.ForkJoinPool;
import com.zenika.java7.forkjoin.fs.CountDirectoriesTask;
import com.zenika.java7.forkjoin.mergesort.ParallelMergeSortAction;
import com.zenika.java7.forkjoin.mergesort.Utils;
public class Main {
private final static DecimalFormat myFormatter = new DecimalFormat("##.##");
private final static ForkJoinPool mainPool = new ForkJoinPool();
private static void mergeSortMain(int size) {
int[] data = Utils.generateRandomSequence(size);
ParallelMergeSortAction mergeAction = new ParallelMergeSortAction(data,
0, data.length);
System.out.println(Arrays.toString(data));
mainPool.invoke(mergeAction);
System.out.println(Arrays.toString(data));
}
private static void fsMain(String path) {
CountDirectoriesTask fst = new CountDirectoriesTask(new File(
path));
Long nb = mainPool.invoke(fst);
System.out.println("Il y a eu "
+ mainPool.getStealCount()
+ " tâches volées sur "
+ nb
+ " tâches forkées. ("
+ myFormatter.format(Float.valueOf(100 * mainPool
.getStealCount()) / nb) + "%)");
}
public static void main(String[] args) {
mergeSortMain(1000);
// fsMain("/home/lucien/doc");
}
}