Bagaimana Cara Melaksanakan Peta Hash Bersama Terbaik di Jawa?



Artikel ini akan memperkenalkan Anda pada konsep yang disebut sebagai Peta Hash Bersama Di Jawa dan menindaklanjutinya dengan demonstrasi praktikal

Artikel ini akan memperkenalkan anda kepada konsep yang disebut sebagai Peta Sambungan Bersama dan ikuti dengan demonstrasi praktikal. Petunjuk berikut akan dibahas dalam artikel ini,

Melanjutkan dengan artikel ini pada Peta Hash Bersama di Jawa





Bagaimana ConcurrentHashMap berfungsi secara dalaman?

Dari Java 5 dan seterusnya ConcurrentHashMap diperkenalkan sebagai alternatif untuk HashTable. Kita juga boleh mendapatkan peta Disegerakkan menggunakan kaedah kelas utiliti yang disebut SynchronizedMap () tetapi ada kelemahan kaedah ini iaitu prestasi yang sangat buruk kerana hanya satu benang yang dapat mengaksesnya pada satu masa. Oleh itu, ConcurrentHashMap menangani masalah ini.



apa hashset di java

Melanjutkan dengan artikel ini pada Peta Hash Bersama di Jawa

Mengapa Peta lain?

Walaupun kita sudah mempunyai HashMap, HashTable maka apa yang diperlukan dari ConcurrentHashMap, itu kerana ia memberikan prestasi yang lebih baik pada masa yang sama ia selamat untuk thread.

Melanjutkan dengan artikel ini pada Peta Hash Bersama di Jawa



Bagaimana ia berbeza?

Ia juga berdasarkan hashing tetapi kinerjanya ditingkatkan dengan strategi pengunciannya. Tidak seperti HashTable atau Synchronized HashMap, ia tidak menggunakan kunci yang sama pada setiap kaedah yang menggunakan kunci tersendiri untuk setiap kaedah, ia menggunakan kunci masuk semula untuk tujuan ini. Sama dengan HashMap, ConcurrentHashMap mempunyai 16 baldi iaitu segmen, untuk membuat ConcurrentHashMap dengan lebih dari 16 baldi ia mempunyai konstruktor yang berbeza.

Sebelum bercakap secara terperinci mari kita tinjau beberapa konsep di bawah:

ConcurrentHashMap: Peta ini membenarkan akses benang serentak. Hanya sebahagian peta yang disebut segmen, iaitu struktur data yang mendasari terkunci sambil menambah atau mengemas kini peta. Ia membolehkan capaian serentak membaca data tanpa mengunci. Ia diperkenalkan untuk meningkatkan prestasi.

  • Tahap Serentak: Ini adalah nombor yang merupakan anggaran jumlah untaian yang diperbaharui secara serentak.
  • Load-Factor: Ini adalah nilai yang digunakan untuk mengawal faktor ukuran.
  • Kapasiti Permulaan: Ini adalah harta yang membuat Peta dengan ukuran yang disediakan.

Mari lihat rajah di bawah dan cuba fahami bagaimana ConcurrentHashMap berfungsi.

Imej- Serentak Hashmap- Edureka

Jadi dalam rajah di atas, kita mempunyai 16 kunci yang hanya mengunci sebahagian peta yang diperlukan supaya kaedah lain dapat diakses oleh utas yang berbeza sehingga meningkatkan prestasi.

Sama dengan HashMap, ConcurrentHashMap berfungsi dengan cara yang sama ia mengandungi 16 segmen secara lalai dan menyimpan elemen dengan hashing jadi jika elemen tersebut mempunyai hash yang sama, ia disimpan pada segmen yang sama seperti yang ditunjukkan dalam rajah di atas dengan bantuan senarai yang dipautkan.

Melanjutkan dengan artikel ini pada Peta Hash Bersama di Jawa

jenis data sql untuk tarikh

Perbezaan antara ConcurrentHashMap dan HashMap

HashMap tergolong dalam Koleksi sementara ConcurrentHashMap tergolong dalam Koleksi Bersama namun terdapat banyak perbezaan lain di antara mereka.

  • ConcurrentHashMap adalahKeselamatan benang iaitudisegerakkan tetapi HashMap tidak disegerakkan.
  • ConcurrentHashMap berprestasi rendah kerana disegerakkan kerana kadangkala utas harus menunggu tetapi HashMap berprestasi tinggi kerana tidak diselaraskan dan sebarang utas dapat mengaksesnya secara serentak.
  • Kami akan mendapat ConcurrentModificationException jika dua utas secara serentak cuba mengubah atau menambah kandungan Objek. Walau bagaimanapun, dalam kes ConcurrentHashMap kami tidak akan mendapat pengecualian semasa melakukan operasi yang sama.

  • Nilai null dibenarkan untuk kunci dan nilai dalam HashMap namun, ConcurrentHashMap tidak membenarkan nilai nol untuk kunci dan nilai yang dicuba untuk menambah nilai nol kita akan mendapat pengecualian iaitu NullPointerException.

  • HashMap diperkenalkan di JDK 1.2 manakala ConcurrentHashMap diperkenalkan di JDK 1.5.

Seperti yang telah kita lihat sebelumnya untuk prestasi yang lebih baik, ini terdiri dari pelbagai simpul sebagai baldi meja yang merupakan segmen meja sebelum Jawa 8 .

Baldi dimulakan dengan malas semasa penyisipan pertama dilakukan. Setiap baldi boleh dikunci secara bebas dengan mengunci simpul pertama baldi juga operasi baca tidak menyekat.

Berbanding dengan HashMap, ConcurrentHashMap memberikan yang tambahan serentak Tahap hujah untuk mengawal bilangan untaian yang dianggarkan untuk digunakan.

Pembina:

  1. ConcurrentHashMap m = peta ConcurrentHash baru ()

    Peta kosong baru dibuat dengan kapasiti awal lalai 16, faktor beban 0.75 dan tahap serentak 16.

  2. ConcurrentHashMap m = ConcurrentHashMap baru (int Kapasiti awal)
    Peta kosong baru dibuat dengan kapasiti awal yang ditentukan, faktor muatan 0,75 dan tahap serentak 16.

  3. ConcurrentHashMap m = ConcurrentHashMap baru (int Kapasiti awal, float loadFactor)

    Peta kosong baru dibuat dengan kapasiti awal dan faktor muatan yang ditentukan dengan tahap serentak 16.

  4. ConcurrentHashMap m = new ConcurrentHashMap (int Kapasiti awal, float loadFactor, int concurrencyLevel)
    Peta kosong baru dibuat dengan kapasiti awal yang ditentukan, faktor beban dan tahap serentak.

  5. ConcurrentHashMap m = peta ConcurrentHash baru (Peta m)
    Membuat ConcurrentHashMap baru dari peta yang disediakan.

Dua argumen lain: initialCapacity dan loadFactor berfungsi sama seperti HashMap.
ConcurrentMap adalah memori yang konsisten pada operasi kunci / nilai dalam persekitaran pelbagai utas.

luas algoritma carian pertama pseudocode

Melanjutkan dengan artikel ini pada Peta Hash Bersama di Jawa

Perangkap

Walaupun mengambil objek, ConcurrentHashMap tidak disekat dan mungkin bertindih dengan operasi kemas kini, jadi untuk prestasi yang lebih baik, mereka hanya mengambil operasi kemas kini yang baru selesai.

Hasil kaedah status agregat termasuk ukuran, isEmpty, dan mengandungValue biasanya berguna hanya apabila peta tidak mengalami kemas kini serentak di utas lain.

Sekiranya kemas kini serentak dikendalikan dengan betul, kaedah status ini boleh dipercayai.

Walaupun kaedah ini tidak menjamin dalam masa nyata.

Kapasiti jadual lalai adalah 16 namun kita dapat mengubahnya menggunakan tahap serentak.

public ConcurrentHashMap (int Kapasiti awal, float loadFactor, int concurrencyLevel) {// ... if (initialCapacity

Sekiranya kunci kekunci diperlukan mengikut urutan, kita boleh menggunakan ConcurrentSkipListMap.

Sekarang setelah melaksanakan program di atas, anda akan memahami Peta Hash Bersama di Jawa. Oleh itu, kami telah mengakhiri artikel ini mengenai Jika anda ingin mempelajari lebih lanjut, lihat , syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen artikel ini dan kami akan menghubungi anda secepat mungkin.