Junior — Middle
96
wait() және sleep() функциялары қалай ерекшеленеді, оларды қалай қолданады?
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
wait() және sleep() функциялары ағындарды басқару үшін қолданылады, бірақ олардың әртүрлі мақсаттары мен мінез-құлқы бар.
-
sleep()— ағымдағы ағынды берілген уақытқа тоқтатады. Ағын жай ғана «ұйықтап» қалады және процессор уақытын пайдаланбайды, бірақ ешқандай ресурстарды немесе блоктауларды босатпайды. -
wait()— әдетте синхрондау объектісінде (мысалы, мониторда) шақырылады және басқа ағынnotify()немесеnotifyAll()шақырғанша ағынды күту күйіне ауыстырады. Бұл кезде ағын мониторды (блокировканы) босатады, осылайша басқа ағындар ресурсты пайдалана алады.
Java-дағы мысал:
synchronized(lock) {
while (!condition) {
lock.wait(); // ағын күтеді және блокировканы босатады
}
// хабарламадан кейін орындалады
}
// sleep мысалы
Thread.sleep(1000); // ағын жай ғана 1 секундқа тоқтайды
Қорытынды:
sleep()— блокировкаларды босатпай тоқтау.wait()— блокировкаларды босатып, басқа ағынмен оятылуы мүмкін күтуді қамтамасыз етеді.