Apa yang salah menggunakan HashMap di lingkungan multithreaded? … Ini adalah masalah jika beberapa utas ditambahkan ke instance HashMap yang sama tanpa sedang disinkronkan. Bahkan jika hanya 1 utas yang memodifikasi HashMap dan utas lainnya membaca dari peta yang sama tanpa sinkronisasi, Anda akan mengalami masalah.
Dapatkah Anda menggunakan HashMap di lingkungan multithread?
Anda harus memastikan: Semua pembaruan HashMap selesai sebelum utas dibuat dan utas yang membuat peta juga memotong utas. Utas hanya menggunakan HashMap dalam mode baca-saja – dapatkan atau iterasi tanpa menghapus. Tidak ada utas yang memperbarui peta.
Mengapa HashMap tidak boleh digunakan di lingkungan multithread, dapatkah itu menyebabkan infinite loop juga?
Kapasitas default HashMap adalah 16 dan Load factor adalah 0,75, yang berarti HashMap akan menggandakan kapasitasnya ketika pasangan Nilai-Kunci ke-12 masuk ke dalam peta (160,75=12). Ketika 2 utas mencoba mengakses HashMap secara bersamaan, maka Anda mungkin menemukan infinite loop. Utas 1 dan Utas 2 mencoba menempatkan pasangan nilai kunci ke-12.
Apakah HashMap mendapatkan utas aman?
HashMap tidak disinkronkan. Ini bukan thread-safe dan tidak dapat dibagikan di antara banyak utas tanpa kode sinkronisasi yang tepat sedangkan Hashtable disinkronkan.
Apa yang paling cocok untuk multithreadedlingkungan?
Jawabannya adalah "ConcurrentHashMap"