תוכן עניינים:
הגדרה - מה המשמעות של אטומי?
Atomic הוא ערכת כלים של שיעורי חבילה java.util.concurrent.atomic משתנים, המסייעים בכתיבת אלגוריתמים של נעילה ונטולי המתנה בשפת ה- Java. אלגוריתם הדורש שרשור חלקי בלבד לצורך התקדמות מתמדת הוא ללא נעילה. באלגוריתם ללא המתנה, כל האשכולות מתקדמים ברציפות, אפילו במקרים של כישלון או עיכוב של פתיל. אלגוריתמים נעולים וניתנים להמתנה ידועים גם כאלגוריתמים לא חסימתיים. אלגוריתמים לא חסימתיים משמשים לתזמון תהליכים וחוטים ברמת מערכת ההפעלה וברמה המכונה הווירטואלית של Java.
Techopedia מסביר את Atomic
לכל שיעורי החבילה java.util.concurrent.atomic יש את הקידומת "האטומית" בשמם. ישנם סוגים שונים של משתנים אטומיים הזמינים בחבילה java.util.concurrent.atomic, כולל:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
דוגמה לכך היא תרחיש בו החוט A מחזיק מנעול. A יכולה רק לגשת ולבצע שינויים במשתנים המוגנים על ידי מנעול זה. אם חוט B מחזיק מנעול זה אחרי A, רק B יכול להציג את השינויים של A על המשתנים המוגנים על ידי אותו מנעול מסוים. הבעיה העיקרית בנעילה מתרחשת כאשר B מנסה לרכוש מנעול המוחזק על ידי A. במקרה זה, B חסום להמתין עד שהמנעול יהיה זמין. אלגוריתמים לא חסימתיים פותרים בעיה זו.
המטרה העיקרית מאחורי בניית מחלקות אטומיות היא הטמעת מבני נתונים לא חסימתיים ושיעורי התשתית הקשורים להם. שיעורי אטום אינם משמשים כמחליפים לשיעורי java.lang.Ieger מספרים קשורים. מרבית שיעורי החבילה הנוכחיים של java.util.Conline משתמשים במשתנים אטומיים במקום בסנכרון, באופן ישיר או עקיף. משתנים אטומיים משמשים גם להשגת תפוקה גבוהה יותר, שמשמעותה ביצועי שרת יישומים גבוהים יותר.
