Rumah  >  Artikel  >  Java  >  Perkara Berhati-hati apabila melakukan aliran selari

Perkara Berhati-hati apabila melakukan aliran selari

王林
王林asal
2024-08-23 18:02:36403semak imbas

Item  Tenha cuidado ao fazer streams paralelas

Jawa dan Pertandingan:

  • Java sentiasa berada di barisan hadapan dalam memudahkan pengaturcaraan serentak, menawarkan sokongan utas asli sejak 1996 dan berkembang untuk memasukkan perpustakaan seperti java.util.concurrent dan rangka kerja fork-join.

Arus dan Paralelisme:

  • Dengan pengenalan strim dalam Java 8, ia menjadi mudah untuk menyelaraskan operasi dengan satu panggilan ke kaedah selari(). Walau bagaimanapun, walaupun dengan mudah, menulis program serentak yang betul dan pantas tetap mencabar.

Prestasi dan Kegagalan:

  • Persamaan saluran paip aliran yang tidak berhati-hati boleh membawa kepada kegagalan prestasi dan keaktifan (program yang tidak selesai). Contoh yang diberikan menunjukkan bahawa penyelarasan strim boleh menyebabkan peningkatan ketara dalam penggunaan CPU tanpa hasil yang dapat dilihat.

Heuristik dan Had:

  • Pejajaran strim boleh gagal jika heuristik yang digunakan untuk membahagikan kerja tidak sesuai, terutamanya dalam operasi seperti Stream.iterate dan had, di mana kos pengiraan elemen tambahan boleh menjadi sangat tinggi.

Struktur Data Ideal:
Strim melalui ArrayList, HashMap, HashSet, ConcurrentHashMap, tatasusunan dan julat adalah calon yang lebih baik untuk penyelarasan kerana kemudahan membahagikan kerja antara urutan dan lokaliti rujukan yang baik.

Operasi Terminal:

  • Keberkesanan pelaksanaan selari juga bergantung pada operasi terminal aliran. Operasi pengurangan, seperti pengurangan, min, maks, kiraan dan jumlah serta operasi litar pintas, seperti anyMatch, allMatch dan noneMatch, adalah lebih baik untuk keselarian.

Spesifikasi Tegas:

  • Fungsi yang digunakan dalam saluran paip selari mestilah bersekutu, tidak mengganggu dan tidak bernegara. Pelanggaran peraturan ini boleh menyebabkan keputusan yang salah atau kegagalan besar.

Perintah Pelaksanaan:

  • Menyelaraskan saluran paip boleh mengacaukan output dan operasi seperti forEachOrdered mungkin diperlukan untuk mengekalkan ketenteraman.

Justified Parallelism:

  • Selarikan aliran hanya jika terdapat justifikasi yang kukuh. Keselarian yang tidak mencukupi boleh mengakibatkan ranap atau prestasi buruk. Sentiasa ukur prestasi sebelum dan selepas selari untuk memastikan ia berfaedah.

Contoh Keberkesanan:

  • Contoh mudah menunjukkan bahawa menyelaraskan pengiraan π(n) mengurangkan masa pelaksanaan daripada 31 kepada 9.2 saat, menunjukkan bahawa keselarian boleh menjadi cekap dalam senario tertentu.

Penggunaan SplittableRandom:

  • Untuk strim nombor rawak selari, pilih SplittableRandom berbanding ThreadLocalRandom atau Random kerana ia direka khusus untuk kegunaan ini dan menawarkan prestasi yang lebih baik.

Kesimpulan:

  • Jangan cuba menyelaraskan saluran paip aliran tanpa mempunyai alasan kukuh untuk mempercayai bahawa berbuat demikian akan mengekalkan ketepatan pengiraan dan meningkatkan kelajuan. Jalankan ujian yang teliti untuk mengesahkan bahawa keselarian adalah wajar sebelum menggunakannya pada kod pengeluaran.

CONTOH
1. Contoh Aliran Berurutan lwn Selari

  • Contoh ini menunjukkan perbezaan prestasi antara aliran berurutan dan selari. ParallelStreamExample.java

2. Contoh Penggunaan Parallel() yang Tidak Cekap

  • Contoh ini menunjukkan cara penyejajaran boleh membawa kepada tingkah laku yang tidak dijangka. InefficientParallelStream.java

3. Contoh Penggunaan Parallel() yang Cekap

  • Contoh ini menunjukkan situasi di mana penyejajaran sebenarnya boleh meningkatkan prestasi. EfficientParallelStream,java

4. Contoh Kepincangan Keselamatan dengan Aliran Selari

  • Contoh ini menunjukkan cara operasi pengurangan yang dilaksanakan dengan baik boleh gagal apabila digunakan secara selari. ParallelStreamSafetyExample.java

5. Contoh dengan SplittableRandom untuk Aliran Selari

  • Contoh ini menunjukkan penggunaan SplittableRandom dalam aliran selari untuk mendapatkan prestasi yang lebih baik. SplittableRandomExample.java

Contoh ini membantu menggambarkan situasi di mana penyejajaran boleh berguna dan juga menunjukkan potensi risiko menggunakan selari() secara sembarangan.

Atas ialah kandungan terperinci Perkara Berhati-hati apabila melakukan aliran selari. 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