Apa yang salah menggunakan HashMap dalam persekitaran berbilang benang? … Ia adalah masalah jika berbilang utas menambah pada contoh HashMap yang sama tanpa ia disegerakkan. Walaupun hanya 1 utas yang mengubah suai HashMap dan utas lain membaca dari peta yang sama tanpa penyegerakan, anda akan menghadapi masalah.
Bolehkah anda menggunakan HashMap dalam persekitaran berbilang benang?
Anda mesti memastikan: Semua kemas kini pada HashMap dilengkapkan sebelum utas dibuat serta-merta dan utas yang mencipta peta juga memisahkan urutan. Urutan hanya menggunakan HashMap dalam mod baca sahaja – sama ada dapatkan atau lelaran tanpa dialih keluar. Tiada urutan mengemas kini peta.
Mengapa HashMap tidak boleh digunakan dalam persekitaran berbilang benang bolehkah ia menyebabkan gelung tak terhingga juga?
Kapasiti lalai HashMap ialah 16 dan Faktor Muatan ialah 0.75, yang bermaksud HashMap akan menggandakan kapasitinya apabila pasangan Nilai-Kekunci ke-12 masuk ke dalam peta (160.75=12). Apabila 2 utas cuba mengakses HashMap serentak, maka anda mungkin menghadapi gelung tak terhingga. Thread 1 dan Thread 2 cuba meletakkan pasangan nilai kunci ke-12.
Adakah HashMap mendapatkan urutan selamat?
HashMap tidak disegerakkan. Ia tidak selamat untuk benang dan tidak boleh dikongsi antara banyak utas tanpa kod penyegerakan yang betul manakala Hashtable disegerakkan.
Apa yang paling sesuai untuk berbilang benangpersekitaran?
Jawapan ialah "ConcurrentHashMap"