Ieteicams, 2024

Redaktora Izvēle

Atšķirība starp miega () un gaidīšanas () metodi Java

Metode gulš un gaida izklausās tā paša uzdevuma izpildē, bet tie daudz atšķiras viens no otra. Miega metode pieder Thread klasei, un gaidīšanas metode pieder objektu klasei. Nozīmīgākā atšķirība, kas atšķir abas no tām, ir miega metode, kas bloķē objektu, līdz tas tiek pārtraukts vai beidzas tā izpilde. No otras puses, gaidīšanas metode atbrīvo objekta bloķēšanu, lai ļautu citiem objektiem izpildīt līdz brīdim, kad to atsāk paziņošanas metode. Pastāv vairākas atšķirības starp miega un gaidīšanas metodi; tos var apskatīt zemāk redzamajā salīdzinājumu tabulā.

Salīdzinājuma diagramma

Salīdzinājuma pamatsGulētpagaidiet
PamataMiega režīms neatbrīvo slēdzeni uz objektu, kamēr tas netiek pārtraukts.Pagaidīšanas metode atbrīvo objekta bloķēšanu, lai ļautu citiem objektiem izpildīt, līdz tiek paziņots vai paziņojumsAll metode tiek izmantota.
KlaseMiega metode ir definēta Thread klasē.Pagaidīšanas metode ir definēta objekta klasē.
SinhronizētsMiega metode nav jāzvana sinhronizētā kontekstā.Sinhronizētā kontekstā jāsazinās ar gaidīšanas metodi.
PabeigšanaMiega režīma izpilde tiek pabeigta, kad pavediens pārtrauc to vai miega režīma laiks ir beidzies.Pagaidiet metodes izpildi, kad paziņojuma () vai paziņojuma () metode tiek pārtraukta.
StatisksMiega metode ir statiska metode.Pagaidīšanas metode nav statiska, tāpēc ir nepieciešams, lai to izmantotu.
IzpildeMiega metode tiek izpildīta uz pašreizējā pavediena.Uz objekta tiek izpildīta gaidīšanas metode.
IzņēmumsPārslēgtsNelegālaArgumentException, IllegalMonitorStateException, InterruptedException.

Miega metodes definīcija

Miega metode ir Thread klases statiskā metode. Miega metode tiek izmantota, ja pavediens nevēlas veikt kādu uzdevumu noteiktam laika periodam. Miega metode pabeidz izpildi vai nu tad, kad ir beidzies metodes laiks, vai arī to pārtrauc kāds cits izpildījums. Kad miega metode ir pabeigta, pavediens atkal iegūst savu palaižamo statusu. Ir divi no miega metodes, kā parādīts zemāk.

 publiska statiska dzimtā tukšuma miega (ilga milisekunde); publiskā statiskā tukšuma miega (ilgi milisekundes un int nanosekunde); 

Iepriekšminētajā divos veidos jūs varat ievērot laiku gan miega metodes formā. Tas ir tāpēc, ka pavediens vienmēr guļ kādam konkrētam parametram minētajam laikam. Miega metodi var pārtraukt jebkurš cits pavediens tā izpildes laikā; līdz ar to tā var mest pārtraukto izņemšanu. Jums ir jārūpējas par to, lai izņēmums tiktu apstrādāts vai nu ar mēģinājuma / nozvejas bloku, vai arī pārvērš atslēgvārdus citādi, tas novedīs pie kompilēšanas laika kļūdas. Miega metode izpilda pašreizējā objekta bloķēšanu un neļauj nevienam citam objektam izpildīt, līdz tā pabeidz izpildi.

Gaidīšanas metodes definīcija

Pagaidiet ir metode, kas definēta Objektu klasē. Gaidīšanas metode tiek izmantota, ja vairāki uzdevumi (pavedieni) cīnās par vienu un to pašu resursu vienu reizi. Kad tiek izmantota gaidīšanas metode, tā atbrīvo bloķēšanu objektam, kas ir izmantojis gaidīšanas metodi. Un dod iespēju citam objektam nokļūt izpildīt līdz brīdim, kad tiek izmantota paziņošanas metode, kas vēlreiz atsāk bloķēt objektu, kas izlaists ar gaidīšanas metodi. Sagaidīšanas metodei ir šāda forma.

 jāgaida (); jāgaida (ilga milisekunde); jāgaida (ilga milisekunde, int nanosekunde); 

Tāpat kā iepriekšminētajās trīs gaidīšanas metodes formās, pirmajai metodei nav laika parametra, tas nozīmē, ka gaidīšanas metodes izpilde turpināsies līdz brīdim, kad paziņojuma vai paziņojuma viss metode netiks izmantota. Pārējām divām metodēm ir laika parametri. Tātad viņi izpildīs laiku līdz termiņa beigām vai līdz brīdim, kad paziņojums vai noitfyAll metode tiek izmantota ātrāk nekā laiks. Sagaidīšanas metode var izmest izņēmumus. IllegalArgumentException, ja pieņemtais laika arguments ir negatīvs. IllegalMonitorStateException, ja pašreizējais pavediens neizmanto resursu. Ja tiek pārtraukta gaidīšanas metode, pārtrauciet pārtraukšanu.

Galvenās atšķirības starp miega un gaidīšanas metodi Java

  1. Galvenais punkts, kas atšķir miega un gaidīšanas metodi, ir tas, ka miega metode aiztur objekta bloķēšanu, līdz tā tiek pārtraukta vai tās laiks beidzas. Tomēr gaidīšanas metode atbrīvo bloķēšanu uz objektu, kas to atsauc un dod citiem objektiem iespēju izpildīt.
  2. Miega metode ir definēta Thread klasē, bet gaidīšanas metode ir definēta Objektu klasē.
  3. Miega metode nav jāizsauc no sinhronizēta konteksta. Bet gaidīšanas metode ir jāizsauc no sinhronizētas.
  4. Miega metode tiek pamodināta, ja ir pagājis metodes laiks vai ja to pārtrauc otrs pavediens. Gaidīšanas metode ir pamodināta
    kad tiek izmantota paziņojuma vai paziņojuma Visa metode.
  5. Miega metode ir statiska metode, bet gaidīšanas metode nav statiska metode.
  6. Miega metode tiek izpildīta uz pašreizējā pavediena, bet gaidīšanas metode tiek izpildīta uz objektu, kas to atsauc.
  7. Izņēmums, ko izmet miega metode, ir pārtraukts, bet izņēmumi, ko izsaka metode, ir nelegālaArgumentException, IllegalMonitorStateException, InterruptedException .

Secinājums:

Ja vairāki pavedieni vēlas izmantot vienu un to pašu resursu, jāizmanto gaidīšanas metode. Ja pavediens nevēlas veikt kādu uzdevumu, jāizmanto miega metode.

Top