ما الخطأ في استخدام HashMap في بيئة متعددة مؤشرات الترابط؟ …إنها مشكلة إذا تمت إضافة سلاسل رسائل متعددة إلى مثيل HashMap نفسه دون مزامنة. حتى إذا كان هناك مؤشر ترابط واحد يعدل HashMap وكانت هناك سلاسل رسائل أخرى تقرأ من نفس الخريطة بدون مزامنة ، فستواجه مشاكل.
هل يمكنك استخدام HashMap في بيئة متعددة مؤشرات الترابط؟
يجب أن تتأكد من: اكتمال كافة التحديثات على HashMap قبل إنشاء مثيل للخيوط ، كما يقوم مؤشر الترابط الذي ينشئ الخريطة بتشكيل سلاسل الرسائل. المواضيع تستخدم فقطHashMap في وضع القراءة فقط- إما الحصول عليها أو التكرار دون إزالة. لا توجد مواضيع تحديث الخريطة.
لماذا لا يجب استخدام HashMap في بيئة متعددة الخيوط ، هل يمكن أن يتسبب في حلقة لا نهائية أيضًا؟
السعة الافتراضية لـ HashMap هي 16 وعامل التحميل 0.75 ، مما يعني أن HashMap ستضاعف سعتها عندما يدخل زوج Key-Value الثاني عشر في الخريطة (160.75=12).عندما يحاول موضوعان الوصول إلى HashMap في وقت واحد، فقد تواجه حلقة لا نهائية. الخيط 1 والخيط 2 يحاول وضع زوج القيمة 12.
هل تحصل HashMap على مؤشر ترابط آمن؟
HashMap غير متزامن.إنه ليس آمنًا لمؤشر الترابطولا يمكن مشاركته بين العديد من سلاسل الرسائل بدون رمز مزامنة مناسب بينما تتم مزامنة Hashtable.
ما هو الأنسب لخيوط متعددةالبيئة؟
الإجابة هي " ConcurrentHashMap"