Junior — Middle
Որ տարրերում կարելի է անվտանգ կերպով կանչել wait() մեթոդը սինխրոնիզացված կոնտեքստում։
sobes.tech AI
Պատասխան AI-ից
Java- ում wait() մեթոդը կարող է կանչվել միայն այն օբյեկտների վրա, որոնց մոնիտորը (մոնիտորի բանալի) ներկայիս հոսքը (թրեդը) գրավել է, այսինքն՝ այդ օբյեկտի վրա սինխրոնիզացված բլոկի կամ սինխրոնիզացված մեթոդի ներսում։ Սա նշանակում է, որ անվտանգ է wait()-ը կանչել միայն այն օբյեկտների վրա, որոնց վրա դուք պահում եք մոնիտորը, օրինակ՝
synchronized (obj) {
obj.wait(); // անվտանգ
}
Եթե wait()-ը կանչեք այդ օբյեկտի վրա սինխրոնիզացված կոնտեքստից դուրս, կբացվի IllegalMonitorStateException։ Հետևաբար, դուք կարող եք կանչել wait() միայն այն օբյեկտների վրա, որոնց վրա ներկայիս հոսքը պահում է մոնիտորը (այսինքն՝ synchronized(obj) կամ այդ օբյեկտի սինխրոնիզացված մեթոդի ներսում):