האם נוכל להשתמש ב-hashmap בסביבת ריבוי הליכי?

האם נוכל להשתמש ב-hashmap בסביבת ריבוי הליכי?
האם נוכל להשתמש ב-hashmap בסביבת ריבוי הליכי?
Anonim

מה לא בסדר בשימוש ב-HashMap בסביבת ריבוי הליכים? … זו בעיה אם שרשורים מרובים מתווספים לאותו מופע HashMap מבלי ש הוא מסונכרן. גם אם שרשור אחד בלבד משנה HashMap ושרשורים אחרים קוראים מאותה מפה ללא סנכרון, תיתקלו בבעיות.

האם אתה יכול להשתמש ב-HashMap בסביבה עם ריבוי הליכים?

עליך לוודא: כל העדכונים ל-HashMap הושלמו לפני שהשרשורים מופעלים והשרשור שיוצר את המפה גם מחלק את השרשורים. השרשורים משתמשים רק ב-HashMap במצב קריאה בלבד - או קבל או איטרציה ללא הסרה. אין שרשורים מעדכנים את המפה.

למה אסור להשתמש ב-HashMap בסביבת ריבוי הליכי האם זה יכול לגרום גם ללולאה אינסופית?

קיבולת ברירת המחדל של HashMap היא 16 ומקדם הטעינה הוא 0.75, מה שאומר ש- HashMap יכפיל את הקיבולת שלו כאשר צמד מפתח-ערך 12 ייכנס למפה (160.75=12). כאשר 2 שרשורים מנסים לגשת ל-HashMap בו-זמנית, אז אתה עלול להיתקל בלולאה אינסופית. שרשור 1 ושרשור 2 מנסים לשים צמד מפתח-ערך 12.

האם HashMap מקבל שרשור בטוח?

HashMap אינו מסונכרן. זה לא בטוח לשרשור ולא ניתן לחלוק אותו בין שרשורים רבים ללא קוד סנכרון מתאים ואילו Hashtable מסונכרן.

מה הכי מתאים לריבוי הליכיסביבה?

התשובה היא "ConcurrentHashMap"

מוּמלָץ: