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