-
Объектінің барлық күйлері қандай
Thread
?- ЖАҢА
- ЖҮРГІЗУГЕ БОЛАДЫ
- БӨЛІМДЕЛГЕН
- КҮТУ
- TIMED_WAITING
- ТОҚТАЛДЫ
-
Блокқа кірген кезде жіп қандай күйлерге бара алады
synchronized
?- ЖҮРГІЗУГЕ БОЛАДЫ
- БӨЛІМДЕЛГЕН
RUNNABLE ішінде, белгіленген code блогы
synchronized
басқа ағынмен қамтылмаса. Әйтпесе, біздің ағын BLOCKED күйін алады және мутекс нысанының шығарылуын күтеді. - Әдісті шақырған кезде ағын қандай күйге өтеді
wait()
?Бұл әдісті шақыру ағынды КҮТУ күйіне қояды.
Әдіс тек ағымдағы ағынмен «құлыпталған» мутекс нысанындағыwait()
блок ішінде шақырылуы мүмкін , әйтпесе әдіс IllegalMonitorStateException ерекше жағдайын шығарады .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(); … }
Әдіс шақырылғандаwait()
, ағымдағы ағын нысаннан құлыпты босатады және әдісті басқа ағынменmonitor
шақыруын күтіп, КҮТУ күйіне өтеді . Бұл орын алғаннан кейін жіп оянады және монитор бос болмаса, оны ұстап алып, жұмысын жалғастырады. Мониторды басқа ағын алып жатса, ағымдағы ағын БЛОКАЛАНҒАН күйге өтеді.monitor.notify()
monitor.notifyAll()
-
Әдісті шақырған кезде ағын қандай күйге өтеді
Бұл әдісті шақыру ағынды TIMED_WAITING күйіне қояды.wait(500)
?
Әдісімен ұқсастығы бойыншаwait()
оны тек ағымдағы ағынмен «құлыпталған (құлыпталған)» мутекс нысанындағыwait(timeout)
блок ішінде шақыруға болады .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(500); … }
Әдісті шақырған кезде
wait()
ағымдағы ағын нысаннан құлыпты босатадыmonitor
және 500 миллисекунд бойы ұйқы режиміне өтеді. Нысанmonitor
басқа ағынмен түсірілуі мүмкін.
500 миллисекундтан кейін жіп оянады және егерmonitor
ол бос болмаса, оны ұстап алып, жұмысын жалғастырады.
Мониторды басқа ағын алып жатса, ағымдағы ағын БЛОКАЛАНҒАН күйге өтеді.Әдісті шақырған кезде ағын қандай күйге өтеді
notify()
?Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(); … }
-дан кейінmonitor.wait()
ағын КҮТУ күйіне өтеді.notify()
Нысандағы басқа ағынмен шақырылған әдіс ағындыmonitor
КҮТУ күйінен ОРЫНДАУ КҮЙІНЕ, егер монитор нысаны басқа ағынмен түсірілмейінше, басқа жағдайда БӨЛІМДЕЛГЕН күйге жылжытады. -
Әдісті шақырған кезде ағын қандай күйге өтеді
notifyAll()
?notifyAll()
барлық жіптерді «қалады». Барлық «ұйықтау» (КҮТУ) ағындарының бірі ОРЫНДАЛУҒА БОЛАДЫ күйге өтіп, пайдаланылатын нысанның мониторын қабылдап, жұмысын жалғастырады. Қалғаны БӨЛЕКТЕЛГЕН күйде болады. Бірінші «ояту» ағыны барлығы күткен мониторды босатқаннан кейін оның тағдыры келесі ағынмен қайталанады (еркін ағын БӨЛІМДЕРДІК күйден ОРЫНДАЛУҒА БОЛАДЫ күйге өтеді). Бұл барлық «оянған» ағындар БӨЛІМДЕЛГЕН күйден шыққанша жалғасады. -
Синхрондалған блоктағы үш ағын
Олардың екеуі БӨЛІМДЕЛГЕН күйге, біреуі ЖҮРГІЗУГЕ БОЛАДЫ күйге өтедіwait()
mutex нысаны деп аталады. Төртінші ағын шақырса, бұл ағындар қандай күйге өтедіnotifyAll()
? -
Ағымдағы ағынды TIMED_WAITING күйіне көшіретініне қарамастан, олардың арасында айтарлықтай айырмашылықтар бар:join(500)
Оның айырмашылығы недеwait(500)
?join(500)
ағында шақырылған , осы блок синхрондалған нысандағы синхрондалған блок ішінде шақырылған. Шақырылған кезде ағымдағы ағын әдісі аяқталу үшін шақырылған ағын үшін 500 миллисекунд күтеді. Шақырылған кезде ағымдағы ағын синхрондалған нысаннан құлыпты босатады және 500 миллисекунд бойы ұйқы режиміне өтеді. 500 миллисекундтан кейін екі жағдайда да ағындар жұмысын жалғастырады.wait(500)
join(500)
wait(500)
join(500)
join()
wait(500)
-
wait(500)
Оның айырмашылығы недеsleep(500)
?sleep(500)
ағында шақырылады,wait(500)
осы блок синхрондалған нысандағы синхрондалған блоктың ішінде шақырылады.
Шақырылған кездеsleep(500)
ағымдағы ағын 500 миллисекунд күтеді, содан кейін жұмысын жалғастырады.
Шақырылған кездеwait(500)
ағымдағы ағын синхрондалған нысаннан құлыпты босатады және 500 миллисекунд бойы ұйқы режиміне өтеді. -
Әдісті шақырған кезде ағын қандай күйге өтеді
Әдіс шақырылғандаyield()
?yield()
, ағымдағы ағын «өз кезегін өткізіп жібереді» және java бірден келесі ағынды орындауға ауысады. Жіп күйден күйгеrunning
өтедіready
. Іске қосулы және дайын күйлер - ЖҰМЫС АБАЛЫ күйінің қосалқы күйлері.
GO TO FULL VERSION