Salīdzinājuma diagramma
Salīdzinājuma pamats | Gulēt | pagaidiet |
---|---|---|
Pamata | Miega 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. |
Klase | Miega metode ir definēta Thread klasē. | Pagaidīšanas metode ir definēta objekta klasē. |
Sinhronizēts | Miega metode nav jāzvana sinhronizētā kontekstā. | Sinhronizētā kontekstā jāsazinās ar gaidīšanas metodi. |
Pabeigšana | Miega 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. |
Statisks | Miega metode ir statiska metode. | Pagaidīšanas metode nav statiska, tāpēc ir nepieciešams, lai to izmantotu. |
Izpilde | Miega metode tiek izpildīta uz pašreizējā pavediena. | Uz objekta tiek izpildīta gaidīšanas metode. |
Izņēmums | Pārslēgts | Nelegā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
- 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.
- Miega metode ir definēta Thread klasē, bet gaidīšanas metode ir definēta Objektu klasē.
- Miega metode nav jāizsauc no sinhronizēta konteksta. Bet gaidīšanas metode ir jāizsauc no sinhronizētas.
- 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. - Miega metode ir statiska metode, bet gaidīšanas metode nav statiska metode.
- Miega metode tiek izpildīta uz pašreizējā pavediena, bet gaidīšanas metode tiek izpildīta uz objektu, kas to atsauc.
- 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.