TL:ExecutorService executorService = Executors.newFixedThreadPool(8);
调试中的DR 运行并发,但在正常运行时它启动并发,但后来在单线程中运行.
我有一些代码,我开始4个不同的任务ExecutorService.其中两个任务应该几乎立即完成,另外两个应该运行一段时间.
这些任务以秒为单位返回执行时间Future<Double>.
此代码负责任务执行和测量:
public Future<Double> measure(int[] arr, ProcessIntArray processIntArray, ExecutorService es) {
Callable<Double> task = () -> {
long start = System.nanoTime();
processIntArray.process(arr);
long end = System.nanoTime();
return (end - start) / 1000000000.0;
};
return es.submit(task);
}
Run Code Online (Sandbox Code Playgroud)
稍后,在启动这些任务后,我将按照先前运行的相同输入大小的执行时间顺序打印它们.
Future<Double> bubbleSortTime = measure(bubbleSortArray, Solution::bubbleSort, executorService);
Future<Double> insertionSortTime = measure(insertionSortArray, Solution::insertionSort, executorService);
Future<Double> quickSortTime = measure(quickSortArray, Solution::quickSort, executorService);
Future<Double> mergeSortTime = measure(mergeSortArray, Solution::mergeSort, executorService);
System.out.println();
System.out.println("array size: " + size);
System.out.println("quick …Run Code Online (Sandbox Code Playgroud)