📅  最后修改于: 2023-12-03 15:15:54.829000             🧑  作者: Mango
在 Java 8 中,我们可以通过 parallelSort()
方法来进行数组的并行排序,这样可以利用多核处理器来提升排序的速度。
下面是一个简单的示例,展示了如何使用 parallelSort()
方法来对整数数组进行排序:
int[] numbers = { 5, 1, 9, 3, 7 };
Arrays.parallelSort(numbers);
这里我们直接调用 Arrays
类的 parallelSort()
方法,并传入待排序的数组作为参数。
如果需要对一个对象数组进行排序,则需要使用 Comparator
来指定排序规则:
Person[] people = new Person[] {
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 20)
};
Arrays.parallelSort(people, Comparator.comparing(Person::getAge));
这里我们使用了 Java 8 中引入的 Comparator
接口的新方法 comparing()
来创建一个按照年龄(getAge()
方法)排序的 Comparator
对象。
在默认情况下,Java 会创建一个线程数等于 CPU 核心数的线程池来执行排序操作。这对于大多数情况都是适用的,但有时候我们可能想要使用自定义的线程池来控制线程数、线程优先级等参数。
下面是一个使用自定义线程池进行并行排序的示例:
int[] numbers = { 5, 1, 9, 3, 7 };
ExecutorService executor = Executors.newFixedThreadPool(2); // 创建线程数为 2 的线程池
Arrays.parallelSort(numbers, executor);
executor.shutdown(); // 关闭线程池
这里我们首先创建了一个包含 2 个线程的线程池,然后将其作为第二个参数传入 parallelSort()
方法中。排序完成后,我们需要手动关闭线程池。
在使用并行排序时,需要特别注意以下几点: