Rumah  >  Artikel  >  Java  >  Bagaimana untuk melakukan pengisihan selari menggunakan fungsi Arrays.parallelSort dalam Java

Bagaimana untuk melakukan pengisihan selari menggunakan fungsi Arrays.parallelSort dalam Java

王林
王林asal
2023-06-26 16:18:101501semak imbas

Dengan pembangunan perkakasan komputer, kami kini boleh menggunakan CPU berbilang teras untuk memproses data dengan lebih cekap. Di Java, kita boleh menggunakan fungsi parallelSort dalam kelas Arrays untuk melaksanakan pengisihan selari untuk mempercepatkan proses pengisihan data.

Mula-mula, mari kita lihat cara menggunakan fungsi Arrays.sort untuk pengisihan satu benang. Berikut ialah contoh mudah yang menunjukkan cara mengisih tatasusunan integer:

import java.util.Arrays;

public class SingleThreadSortExample {
    public static void main(String[] args) {
        int[] numbers = { 5, 3, 6, 1, 9, 4 };
        Arrays.sort(numbers); // 使用 Arrays.sort 函数进行排序
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

Outputnya ialah: 1 3 4 5 6 91 3 4 5 6 9

在这个例子中,我们使用了Arrays.sort函数对一个整数数组进行排序。这是一个单线程调用,它将所有的排序工作都放在一个线程中完成。

但是,使用parallelSort函数,我们可以将排序过程分成多个线程并行执行。这将极大地提高排序效率。以下是使用Arrays.parallelSort函数进行并行排序的示例代码:

import java.util.Arrays;

public class ParallelSortExample {
    public static void main(String[] args) {
        int[] numbers = { 5, 3, 6, 1, 9, 4 };
        Arrays.parallelSort(numbers); // 使用 Arrays.parallelSort 函数进行排序
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

输出结果与单线程排序相同:1 3 4 5 6 9。但是,在多核CPU的设备上,parallelSort函数将比单线程排序更快。这个例子只是一个简单的展示,实际上,数据量越大,使用parallelSort进行并行排序的优势越大。

如果你需要对对象数组进行排序,也可以使用parallelSort函数,但需要指定一个自定义的Comparator来进行排序。以下是对一个字符串数组进行并行排序的示例:

import java.util.Arrays;
import java.util.Comparator;

public class ParallelSortWithComparatorExample {
    public static void main(String[] args) {
        String[] words = { "banana", "apple", "pear", "orange" };
        Arrays.parallelSort(words, new Comparator<String>() {
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });
        for (String word : words) {
            System.out.print(word + " ");
        }
    }
}

输出结果为:apple banana orange pear

Dalam contoh ini, kami menggunakan fungsi Arrays.sort Sort an tatasusunan integer. Ini ialah panggilan satu utas yang melakukan semua kerja pengisihan dalam satu utas.

Walau bagaimanapun, menggunakan fungsi parallelSort, kita boleh membahagikan proses pengisihan kepada berbilang benang untuk pelaksanaan selari. Ini akan meningkatkan kecekapan pengisihan. Berikut ialah contoh kod untuk pengisihan selari menggunakan fungsi Arrays.parallelSort:

rrreee

Hasil keluaran adalah sama dengan pengisihan berbenang tunggal: 1 3 4 5 6 9. Walau bagaimanapun, pada peranti dengan CPU berbilang teras, fungsi parallelSort akan lebih pantas daripada pengisihan satu benang. Contoh ini hanyalah demonstrasi mudah Malah, lebih besar jumlah data, lebih besar kelebihan menggunakan parallelSort untuk pengisihan selari. 🎜🎜Jika anda perlu mengisih tatasusunan objek, anda juga boleh menggunakan fungsi parallelSort, tetapi anda perlu menentukan Pembanding tersuai untuk mengisih. Berikut ialah contoh pengisihan selari tatasusunan rentetan: 🎜rrreee🎜Hasil keluarannya ialah: pisang epal oren pir🎜🎜Dalam contoh ini, kami menggunakan kaedah Arrays.parallelSort untuk mengisih tatasusunan rentetan ke menyusun. Tidak seperti pengisihan berutas tunggal, kita perlu menghantar Pembanding tersuai kepada fungsi pengisihan untuk menentukan peraturan pengisihan. Dalam contoh ini, kami menggunakan kelas dalaman tanpa nama untuk mencipta Pembanding tersuai yang mengisih unsur mengikut abjad. 🎜🎜Seperti yang anda lihat, menggunakan fungsi parallelSort boleh membantu anda mengisih data dengan lebih pantas. Walau bagaimanapun, perlu diperhatikan bahawa pengisihan satu benang mungkin lebih cepat dengan volum data yang kecil. Oleh itu, apabila menggunakan fungsi parallelSort, anda perlu memilih kaedah pengisihan yang paling sesuai dengan anda mengikut situasi sebenar. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melakukan pengisihan selari menggunakan fungsi Arrays.parallelSort dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn