כיצד להתמודד עם סתום בג'אווה?



מאמר זה מכסה את המושג Deadlock ב- Java עם דוגמה שמראה כיצד חוטים בתוכנית מרובת הליכים נחסמים.

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

מהו דדלאק בג'אווה?

מבוי סתום בג'אווה הוא מצב בו שני חוטים או יותר נחסמים לנצח ומחכים זה לזה.





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

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



קבל אורך מערך ב- javascript

מבוי סתום בג

דוגמה למבוי סתום

class class דוגמה {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = Thread new () {public void run () {synchronized (r1) {System. out.println ('חוט 1: נעול r1') נסה {Thread.sleep (100)} לתפוס (חריג e) {} מסונכרן (r2) {System.out.println ('חוט 1: נעול R2')}} } חוט t2 = חוט חדש () {ציבורי ריק ריק () {מסונכרן (r1) {System.out.println ('חוט 2: נעול r1') נסה {Thread.sleep (100)} לתפוס (חריג e) {} מסונכרן (r2) {System.out.println ('חוט 2: R2 נעול')}}} t1.start () t2.start ()}}
 תְפוּקָה: חוט 1: נעול r1 חוט 2: נעול r2

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

אמנם לא ניתן להימנע לחלוטין ממצב מבוי סתום, אך אנו יכולים לנקוט באמצעים מסוימים או מצביעים כדי להימנע מהם:

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

  • הימנע ממנעולים מיותרים - יש לתת את המנעולים לחוטים החשובים. מתן מנעולים לחוטים המיותרים הגורמים למצב סתום.



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

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

אם מצאת מאמר זה בנושא 'סגר ב- Java' רלוונטי, עיין בכתובת חברת למידה מקוונת אמינה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם.

כיצד להתקין ליקוי חמה

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

אם אתה נתקל בשאלות כלשהן, אל תהסס לשאול את כל השאלות שלך בקטע ההערות של 'סגר ב- Java' והצוות שלנו ישמח לענות.