חריג השינוי במקביל מתרחש כאשר מנסים לשנות אובייקט בו-זמנית כאשר הוא אינו מותר. חריג זה מגיע בדרך כלל כאשר עובדים עם שיעורי Java Collection. לדוגמא - אסור לשרשור לשנות אוסף כאשר שרשור אחר חוזר עליו.
איך אני מתקן חריג שינוי בו-זמני?
נוכל גם להימנע מהחריג של שינוי בו-זמני בסביבה משורשרת אחת. אנו יכולים להשתמש ב-שיטת ההסרה של Iterator כדי להסיר את האובייקט מאובייקט האוסף הבסיסי. אבל במקרה זה, אתה יכול להסיר רק את אותו אובייקט ולא אף אובייקט אחר מהרשימה.
איך מונעים חריגות של שינויים במקביל במפה?
השתמש ב-ConcurrentHashMap. המשך להשתמש ב-HashMap פשוט, אבל בנה מפה חדשה על כל שינוי והחלף מפות מאחורי הקלעים (מסנכרן את פעולת המעבר או באמצעות AtomicReference)
איזו שיטה של איטרטור זורקת חריג שינוי במקביל?
אם נפעיל רצף של שיטות על אובייקט שמפר את החוזה שלו, אז האובייקט זורק ConcurrentModificationException. לדוגמה: אם תוך כדי איטרציה על האוסף, אנו מנסים ישירות לשנות את האוסף הזה, אזי ה-fail-fast iterator יזרוק את ConcurrentModificationException זה.
מהו חריג השינוי במקביל בגלישה ב-Java Stack?
אם שרשור בודד מוציא רצף של הפעלות לשיטה שמפר את החוזה של אובייקט, ה-object עשוי לזרוק את החריג הזה. לדוגמה, אם שרשור משנה אוסף ישירות בזמן שהוא חוזר על האוסף עם איטרטור מהיר כשל, האיטרטור יזרוק את החריג הזה.