Unerežiim ja ootamine on kaks meetodit, mida Java-s mitmekeermestamiseks kasutatakse. Unerežiim kuulub niidiklassi, ootemeetod aga klassi klassi. võtme erinevus une ja ootamise vahel Java-s on see, et puhkeolekut kasutatakse praeguse lõime täitmise peatamiseks määratud arvu millisekundite jooksul, samal ajal kui ootamismeetodi abil pannakse praegune lõim ootama, kuni mõni teine lõim kutsub objektile teatama või teavitama kõiki meetodeid.
Niit on operatsioonisüsteemi väikseim töötlemisüksus. See on ühekordne järjestikune juhtimisvoog programmis. Keermed on kerged. Mitmekeermeline on mitmete lõimede samaaegse käitamise mehhanism. Programmeerimiskeeled, näiteks Java, toetavad mitmekordset lõimimist. Mitmekeermelisusel on eeliseid, kuna see võimaldab korraga kasutada mitut niiti ja niidid on üksteisest sõltumatud. Java-s on meetodeid, mida saab kasutada mitmekordseks lõimimiseks. Neist kaks magavad ja ootavad.
1. Ülevaade ja peamised erinevused
2. Mis on Java Java?
3. Mis on Java ootamine?
4. Jaavas une ja ootuste sarnasused
5. Kõrvuti võrdlus - uni vs oodake Java-vormingus tabelina
6. Kokkuvõte
Operatsioonisüsteemis töötab mitu protsessi. Protsess on käivitamisel olev programm. Igal protsessil võib olla mitu lõime ja nende lõimede vahel toimub kontekstivahetus. Java-keeles on lõime loomiseks kaks võimalust. See on niidiklassi laiendamine või Runnable-liidese rakendamine. Niitklassil on lõime jaoks lõimeoperatsioonide loomiseks ja teostamiseks konstruktorid ja meetodid. Keeruklass laiendab objektiklassi ja rakendab käivitatava liidese. Käitatavat liidest peaksid rakendama kõik klassid, mille eksemplare on ette nähtud lõimega täitma. Kui niit käivitub, kirjutatakse käivitusmeetodisse kood, mis peaks täitma. Lõime, mis peaks käima, valib lõimede planeerija. Ühes protsessis töötab ainult üks niit.
Niit läbib mitu faasi. Pärast lõime klassi objekti loomist saab programmeerija käivitusmeetodi välja kutsuda. Enne selle meetodi kasutuselevõttu öeldakse, et niit on uues olekus. Lõimede plaanija valib käivitatava lõime. Kui lõimede plaanija pole lõime veel valinud, kuid kui käivitusmeetodile tuginetakse, on see niit käitatavas olekus. Pärast seda, kui lõimede planeerija valib käivitatava lõime, läheb see tööasendisse. Kui niit on elus, kuid praegu ei saa seda käitada, siis on see mitte käivitatavas või blokeeritud olekus. Pärast käitamismeetodi lõpuleviimist läheb niit lõpetatud olekusse. Need on keerme elutsükli peamised etapid.
Niitklassis on erinevate ülesannete täitmiseks saadaval erinevaid meetodeid. Unemeetodit kasutatakse meetodi magamiseks kindla aja jooksul. Unemeetodi süntaksiks on tühine puhkeolek (pikad millisekundid), milleks on InterruptedException. See põhjustab hetkel täidetava lõime peatamise ajutiselt teatud arvu millisekundite jooksul. Kui mõni teine lõng katkestab praeguse lõime, kustutatakse selle erandi väljalülitamisel praeguse lõime katkestatud olek.
Joonis 01: Java programm unerežiimiga
Ülaltoodud programmi kohaselt sisaldab käitamisviis koodi, mis tuleks käivitada. Põhiprogrammis luuakse 2 näidiseThead1 objektid ja neile kutsutakse käivitusmeetodid. See võimaldab käivitada koodi käivitusmeetodi sees. Korraga käivitatakse ainult üks niit. Keermega. uni (1000); võimaldab esimesel lõimel lõpetada täitmise 1000 millisekundi jooksul. Kui niit magab, võtab lõimede ajastaja teise lõime üles.
Mitu lõime võib juurdepääsu jagatud ressursile. See võib põhjustada vale väljundi genereerimise. Lõimede sünkroonimist saab kasutada jagatud ressursile juurdepääsu saamiseks ainult ühe lõime saamiseks. Oletame olukorra järgmiselt. Kui on kaks lõime, näiteks t1 ja t2, alustage t1 väärtuste salvestamist tekstifaili nimega Text1.txt. Neid väärtusi kasutatakse t1 naasmisel mõnel muul arvutamisel. Kui t2 algab enne, kui t1 naaseb, saab t2 muuta t1 abil salvestatud väärtusi. See võib põhjustada, et t1 annab vale väljundi. Kui t1 hakkab faili Text1.txt kasutama, saab sünkroonimise abil selle faili lukustada, nii et sellele pääseb juurde ainult t1-ga. T2 ei saa seda muuta enne, kui t1 vabastab selle tekstifailile juurdepääsu lukustamiseks. Pärast ülesande täitmist saab t1 luku vabastada. Lukk on tuntud ka kui monitor.
Keermete sünkroonimist saab saavutada keermesisese kommunikatsiooni abil. Kriitiline sektsioon on koodisegment, mis pääseb juurde jagatud ressurssidele. Keermesidevahelises suhtluses peatatakse niit selle kriitilises sektsioonis ja teisel keermel lubatakse siseneda samasse kriitilises sektsioonis, mida täidetakse. Selle rakendamiseks kasutatakse ootamise, teatamise ja teatamise kõiki meetodeid. Nad kuuluvad klassi Object. Ootamismeetodit kasutatakse selleks, et praegune lõim vabastaks luku ja oodatakse, kuni mõni teine lõim kutsub objektile teatama või teavitama kõiki meetodeid. Teavitamismeetodit kasutatakse ühe lukustuse ootava lõime äratamiseks. TeavitabAll äratab kõik lukuga seotud lõimed.
Joonis 02: Kalkulaatori klass
Joonis 03: Põhimeetod
Kalkulaatori klass laiendab lõime. Sünkroniseeritud plokk on käitamismeetodi sees. For loop ja teavitame meetod on sünkroonitud plokis. Põhimeetodi sees kutsutakse sellele eksemplarile loodud lõime eksemplar ja algusmeetod. Peamine meetod ootab, kuni lõim teatab. Programmi käivitamisel ootab põhimeetod kuni kogu käitusmeetodi täitmiseni ja ootab teavitusmeetodit. Kui teavitusmeetod on kutsutud, peatub peamine meetod ootamise ja alustab ülejäänud koodi täitmist. Põhiline ootab, kuni kalkulaatori lõim on lõpule viidud. Lõpuks trükitakse summa tulemus.
Kui sünkroonitud plokki pole ja kui põhimeetodil on allpool esitatud kood, annab see väljundi nullina, kuna see ei oota teise lõime lõpulejõudmist.
Kalkulaator t1 = uus kalkulaator ();
t1. algus ();
System.out.println (t1.sum);
uni vs oota Java | |
Unerežiim peatab praeguse niidi täitmise kindlaksmääratud arvu millisekundite jooksul, sõltuvalt süsteemi taimerite ja ajastajate täpsusest ja täpsusest. | Ootmismeetod põhjustab praeguse lõime ootamise, kuni mõni teine lõim kutsub objekti teavitama või teavitama kõiki meetodeid. |
Seotus Lockiga | |
Unerežiim ei vabasta objekti sünkroonimise ajal lukku. | Ootmismeetod vabastab lukustuse sünkroonimise ajal. |
Täitmise meetod | |
Unerežiimi rakendatakse praegusel lõimel. | Objektile kutsutakse ootamismeetod. |
Seotud klass | |
Uni on keeruklassi meetod. | Ootamine on objektiklassi meetod. |
Lõpetamine | |
Uneprotsess on lõppenud pärast kindlaksmääratud aja möödumist. | Ootmismeetod katkestatakse, kui helistate meetoditele, mis teatavad või teatavad. |
Opsüsteemis töötab mitu protsessi. Igal protsessil võib olla mitu lõime. Niit on operatsioonisüsteemi väikseim töötlemisüksus. Java programmeerimiskeel toetab mitmekeelset kasutamist. See võimaldab korraga töötada mitut niiti. Unerežiim ja ootamine on kaks meetodit, mida saab kasutada mitme keermestamise rakendamisel. Unerežiimi ja ootamise erinevus Java-s seisneb selles, et unerežiimi kasutatakse praeguse lõime täitmise peatamiseks määratud arvu millisekundite jooksul, samal ajal kui ootamismeetodi kasutamisel pannakse praegune lõim ootama, kuni mõni teine lõim kutsub teatama või teavitama kõiki objekti meetod.
1. “Keemidevaheline suhtlus Java-s - Javatpoint”.. JavaTPoint. Saadaval siin
2. Keermevaheline Suhtlus Java mitmekeelsuses | Core Java õpetus | Õppeaeg. Saadaval siin