Sobes.tech
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() — блокировкаларды босатып, басқа ағынмен оятылуы мүмкін күтуді қамтамасыз етеді.