Middle
Thread.sleep() жана Thread.yield() ыкмаларынын айырмачылыктары кандай?
sobes.tech AI
AIден жооп
Thread.sleep() учурдагы жиптин ишин белгилүү бир убакытка токтотуп, аны Timed Waiting абалына өткөрөт. Ал CPUны башка жиптерге бербейт. Thread.yield() учурдагы жипке, бирдей же жогору приоритетке ээ башка жиптерге убактылуу иштөө мүмкүнчүлүгүн берүү даяр экенин билдирет, бирок бул ишке ашарынын кепилдиги жок. yield() жипти Runnable абалына өткөрөт.
Негизги айырмачылыктар:
- Убакыт:
sleep()белгиленген убакытка токтотууну кепилдейт.yield()башкарууну берүү же так убакытка токтотууну кепилдебейт. - Жиптин абалы:
sleep()жиптиTimed Waiting(жеWaitingтайм-аут менен) абалына өткөрөт.yield()жиптиRunnableабалына өткөрөт. - Максаты:
sleep()кечиктирүүлөрдү киргизүү үчүн колдонулат.yield()башка жиптердин иштешине мүмкүнчүлүк берүү үчүн колдонулат, айрыкча циклдерде, CPUны монополиялоодон сактануу үчүн. - Жоспорлоочу:
sleep()планировщикке таасир этпейт (жана жип активдүү эмес).yield()планировщикке сунуш.
Колдонуу мисалы:
// sleep() колдонуу
try {
Thread.sleep(100); // 100 миллисекундка токтотоор
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// yield() колдонуу
Thread.yield(); // иштөө мүмкүнчүлүгүн берүү аракетинде