הפילוסופים הסועדים, THREADS בJAVA

  • פותח הנושא neko
  • פורסם בתאריך

neko

New member
הפילוסופים הסועדים, THREADS בJAVA

כחלק מהקורס "מע' הפעלה" אנחנו מסמלצים פתרונות של הDINING PHILOSOPHER. כחלק מהפתרון נתקלתי בבעיה. רציתי, כדי למנוע BUSY-WAITING, שהTHREAD של כל פילוסוף יעשה WAIT אם הוא לא מוצא מזלג, ושכל פילוסוף שמסיים יעשה NOTIFYALL כדי שהאחרים יבדקו אם המזלג שהם צריכים חזר. משום מה, הקוד מוציא לי איזה EXCEPTION שקשור בTHREADS בזמן ריצה (NOT OWNER או משהו כזה). יש למישהו רעיון?
while (firstFork.taken() && !holdingFirst) { try { wait(); } catch (InterruptedException e) { } holdingFirst=firstFork.lift(); }​
 

zeevb

New member
Synchronized block

()wait צריך להתבצע בתוך Synchronized block - פרטים נוספים בלינק המצורף.
 
למעלה