שאלה סיכרון THREAD בJAVA

liran22

New member
שאלה סיכרון THREAD בJAVA

שלום כתביתי פונקציה שהיא synchronized שבה אני מבקש משאב ואם אני לא מקבל את המשאב אני שולח את הTHREAD לישון בהנחה שTHREAD אחר יגש לפונקציה הזו ויקבל משאבים אחרים ובסוף ישחרר את המשאב הרצוי לTHREAD שישן אבל בפועל מה שקורה הTHREAD הולך לישון אבל אף THREAD אחר לא ניכנס לפונקציה כדי לבקש משאבים ולשחרר את הפקק ונוצרת לולאה אין סופית שהTHREAD שנימצא בפונקציה ישן מתעורר בודק אם הוא יכול לקבל משאב מקבל תשובה שלילת ושוב ישן. ניסתי להישמש ב notify כדי לנסות להעיר THREAD שנירדמו על הפונקציה אבל קיבלתי את הודעת השגיאה
java.lang.IllegalMonitorStateException: current thread not owner at java.lang.Object.notify(Native Method)​
איך אני גורם לTHREAD ללכת לישון ולאחרים להיכנס לפונקציה תודה מראש
 

ahab

New member
סנכרון

חוט יכול לקרוא למתודת notify רק על אובייקט שהוא מחזיק את המנעול שלו (ביצע synchronized על האובייקט הזה).
 
למעלה