כיצד ליישם מילות מפתח נדיפות בג'אווה?



ג'אווה היא תכנות אחד שמתברך בהמון תכונות. במאמר זה נחקור תכונה אחת כזו שהיא מילת מפתח נדיפה בג'אווה.

הוא תכנות אחד שמבורך בשפע תכונות. במאמר זה נחקור תכונה אחת כזו שהיא מילת מפתח נדיפה בג'אווה. המצביעים הבאים יוסקרו במאמר זה,

ממשיך הלאה עם מאמר זה בנושא מילות מפתח נדיפות בג'אווה.





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

דוגמא

מבחן מחלקה {static int var = 5}

בדוגמה שלעיל, נניח ששני פתילים עובדים על אותה מחלקה. שני האשכולות פועלים על מעבדים שונים כאשר לכל שרשור יש את העותק המקומי שלו של var. אם שרשור כלשהו משנה את ערכו, השינוי לא ישקף בזו המקורית בזיכרון הראשי. זה מוביל לחוסר עקביות בנתונים מכיוון שהחוט השני אינו מודע לערך שהשתנה.



מבחן מחלקה {סטטי נדיף int var = 5}

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

ממשיך הלאה עם מאמר זה בנושא מילות מפתח נדיפות בג'אווה.

ההבדל בין סנכרון למילת מפתח נדיפה

מילת מפתח נדיפה אינה תחליף למילת מפתח מסונכרנת, אך היא יכולה לשמש כחלופה במקרים מסוימים. ישנם ההבדלים הבאים:



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

ממשיך הלאה עם מאמר זה בנושא מילות מפתח נדיפות בג'אווה.

דוגמא:

מחלקה ציבורית VolatileTest {לוגרית סופית פרטית לוגרית LOGGER = MyLoggerFactory.getSimplestLogger () סטטית פרטית נדיפה int MY_INT = 0 ציבורי ריק ריק (מחרוזת [] טענות) {חדש ChangeListener (). התחל () חדש ChangeMaker (). התחל ()} מחלקה סטטית ChangeListener מרחיב את האשכול {@Override public void run () {int local_value = MY_INT while (local_value)<5){ if( local_value!= MY_INT){ LOGGER.log(Level.INFO,'Got Change for MY_INT : {0}', MY_INT) local_value= MY_INT } } } } static class ChangeMaker extends Thread{ @Override public void run() { int local_value = MY_INT while (MY_INT <5){ LOGGER.log(Level.INFO, 'Incrementing MY_INT to {0}', local_value+1) MY_INT = ++local_value try { Thread.sleep(500) } catch (InterruptedException e) { e.printStackTrace() } } } } } 

תמונה- נדיף-אדוריקה

לפיכך הגענו לסוף מאמר זה בנושא 'מילת מפתח נדיפה בג'אווה'. אם ברצונך ללמוד עוד, עיין ב- Java Training של Edureka, חברת למידה מקוונת אמינה. אדוריקה הקורס נועד לאמן אותך למושגי ליבה מרכזיים ומתקדמים יחד עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.