Рецоммендед, 2024

Избор Уредника

Разлика између начина спавања () и чекања () у Јави

Метод спавања и чекања звучи као да радите исти задатак, али они се много разликују. Слееп метода припада класи Тхреад, а метода чекања припада класи Објецт. Најважнија разлика која разликује оба, је да метода спавања држи браву на објекту док се не прекине или заврши извршење. С друге стране, метода чекања ослобађа закључавање објекта да би се остали објекти извршили док се не настави методом нотифи. Постоји још неколико разлика између начина спавања и чекања; можете их истражити у табели за успоредбу приказаној у наставку.

Цомпарисон Цхарт

Основа за поређењеспаватичекати
БасицНачин спавања не ослобађа браву на објекту док се не прекине.Метода чекања ослобађа закључавање објекта како би други објекти могли да се извршавају док се не позове метода или је обавештен.
КласаСлееп метода је дефинисана у класи Тхреад.Метода чекања је дефинисана у класи Објецт.
СинхронизованоСлееп метода не мора бити позвана унутар Синцхронизед цонтект.Метода чекања мора бити позвана унутар контекста синхронизације.
ЗавршетакИзвршавање методе спавања завршава се када га прекине нит или је истекла метода спавања.Чекање извршења методе је завршено када је нотифи () или нотифиАлл () метода прекине.
СтатицСлееп метода је статичка метода.Метода чекања није статична, зато је потребно да је позове.
ИзвршењеМетода спавања се извршава на тренутној нити.Метода чекања се извршава на објекту.
ИзузетакИнтерруптедЕкцептионИллегалАргументЕкцептион, ИллегалМониторСтатеЕкцептион, ИнтерруптедЕкцептион.

Дефиниција методе спавања

Метода спавања је статичка метода класе Тхреад . Метода спавања се позива када нит не жели да изврши било који задатак у одређеном временском периоду. Метод спавања довршава извршење било када је истекло вријеме методе, или је прекинуто неком другом нити у извршењу. Након што је метода спавања завршена, нит поново добија статус који се може извршити. Постоје два начина спавања као што је приказано испод.

 јавни статички нативе воид слееп (дуго милисекунда); јавни статички празни спавање (дуге милисекунде и инт наносекунде); 

У горе наведеној форми, можете посматрати време које се помиње у оба облика спавања. То је зато што нит увек спава за одређено време поменуто у параметру. Метода спавања може бити прекинута било којом другом нити током њеног извршавања; стога, она може бацити ИнтерруптедЕкецптион. Морате водити рачуна о томе да се изузетком управља било пробним / цатцх блоком или Тхровс кључним ријечима, иначе ће доћи до грешке у времену компајлирања. Метод спавања држи закључавање на тренутном објекту у извршењу и не дозвољава да се било који други објекат изврши док не заврши његово извршење.

Дефиниција методе чекања

Ваит је метод дефинисан у класи Објецт . Метода чекања се користи када се неколико задатака (нити) бори за исти ресурс један по један. Метода чекања када је позвана ослобађа закључавање на објекту који је позвао метод чекања. И пружите шансу другом објекту да се изврши док се не позове метода назначи која даље наставља закључавање на објекту који је објављен методом чекања. Метода чекања има следећи облик.

 чекати(); чекање (дуга милисекунда); чекање (дуга милисекунда, инт наносекунда); 

Као у претходна три облика метода чекања, први метод нема временски параметар, што значи да ће се извршавање методе чекања наставити док се не позове метод нотификације или нотифиАлл. Остала два метода имају временске параметре. Тако ће се извршити до истека времена или док се не пријави или нотитфиАлл метода се активира раније него што истекне време. Метода чекања може бацити изузетке. ИллегалАргументЕкцептион, ако је прошло време аргумент негативно. ИллегалМониторСтатеЕкцептион, ако тренутна нит не користи ресурс. ИнтерруптедЕкцептион, ако је метода чекања прекинута.

Кључне разлике између Слееп и Ваит методе у Јави

  1. Главна тачка која разликује методу спавања и чекања је да метода спавања држи браву на објекту док се не прекине или када време истекне. Међутим, метода чекања ослобађа закључавање објекта који га позива и даје другим објектима шансу за извршавање.
  2. Метод спавања је дефинисан у класи Тхреад док је метода чекања дефинисана у класи Објецт .
  3. Метода спавања не мора бити позвана из синхронизованог контекста. Али, метода чекања мора бити позвана из синхронизоване.
  4. Метода спавања се пробудила ако је време методе истекло или је прекинуто другом нити. Метода чекања је пробудјена
    када је позвана метода нотифи или нотифи све.
  5. Метода спавања је статичка метода, док метода чекања није статичка метода.
  6. Метода спавања се извршава на тренутном низу, док се метод чекања извршава на објекту који га позива.
  7. Изузетак који је избачен методом спавања је ИнтерруптедЕкцептион, док су изузеци тхрвон би ваит методом ИллегалАргументЕкцептион, ИллегалМониторСтатеЕкцептион, ИнтерруптедЕкцептион .

Закључак:

Када више нити жели да користи исти ресурс један по један, онда се мора користити метод чекања. Када нит не жели да изврши неки задатак, онда се мора користити метода спавања.

Top