Олон урсгалтай орчинд HashMap ашиглахад юу нь болохгүй байна вэ? … Хэрэв нэг HashMap жишээндсинхрончлолгүйгээр олон хэлхээ нэмэгдэж байгаа бол асуудал гардаг. Зөвхөн 1 хэлхээ нь HashMap-г өөрчилж, бусад хэлхээс синхрончлолгүйгээр тухайн газрын зургаас уншиж байгаа ч гэсэн танд асуудал гарах болно.
Та олон урсгалтай орчинд HashMap ашиглаж чадах уу?
Та дараахийг шалгах ёстой: HashMap-ийн бүх шинэчлэлтүүд хэлхээг үүсгэхээс өмнө хийгдсэн байх ба газрын зургийг үүсгэгч хэлхээ нь хэлхээг салаа. Сэдвүүд нь зөвхөн HashMap-г зөвхөн унших горимд ашиглаж байна – авах эсвэл устгахгүйгээр давталт хийх. Газрын зургийг шинэчилж байгаа хэлхээ холбоо алга.
Яагаад HashMap-ийг олон урсгалтай орчинд ашиглаж болохгүй гэж энэ нь мөн хязгааргүй давталт үүсгэж болох уу?
HashMap-н өгөгдмөл хүчин чадал нь 16, Ачааллын хүчин зүйл нь 0.75 бөгөөд энэ нь газрын зураг дээр 12 дахь Түлхүүр-утга хосыг оруулахад HashMap хүчин чадлаа хоёр дахин нэмэгдүүлнэ (160.75=12). 2 хэлхээ HashMap-д нэгэн зэрэг хандахыг оролдох үед, та хязгааргүй давталттай тулгарч магадгүй. Thread 1 болон Thread 2 нь 12 дахь түлхүүр-утгийн хосыг оруулахыг оролддог.
HashMap авах хэлхээ аюулгүй юу?
HashMap синхрончлогдоогүй. Энэ нь хэлхээнд аюулгүй биш бөгөөд зохих синхрончлолын кодгүйгээр олон хэлхээ хооронд хуваалцах боломжгүй, харин Hashtable нь синхрончлогдсон.
Олон урсгалтад юу хамгийн тохиромжтой вэорчин?
Хариулт нь "ConcurrentHashMap"