Erinevus Java-režiimis Une Ja Ootamise Vahel

Sisukord:

Erinevus Java-režiimis Une Ja Ootamise Vahel
Erinevus Java-režiimis Une Ja Ootamise Vahel

Video: Erinevus Java-režiimis Une Ja Ootamise Vahel

Video: Erinevus Java-režiimis Une Ja Ootamise Vahel
Video: Leap Motion SDK 2024, Aprill
Anonim

Peamine erinevus - uni vs ootamine Java-s

Uni ja oot on Java-s mitmikeermeliseks kasutamiseks kaks meetodit. Unerežiim kuulub klassi Thread, samas kui ootemeetod kuulub klassi Object. Peamine erinevus Java-režiimis une ja ootamise vahel seisneb selles, et unerežiimi abil peatatakse praeguse lõime täitmine määratud arvuks millisekunditeks, samas kui ootemeetodit kasutatakse praeguse lõime ootamiseks, kuni teine lõim kutsub teavitama või objectAll meetod.

Lõng on operatsioonisüsteemi väikseim töötlemisüksus. See on juhtimise üks järjestikune voog programmis. Lõngad on kerged. Mitme lõime on mitme lõime samaaegse käitamise mehhanism. Programmeerimiskeeled, näiteks Java, toetavad mitmikeermelist töötamist. Mitmel niidil on eelised, kuna see võimaldab korraga käivitada mitut lõime ja niidid on üksteisest sõltumatud. Java-s on meetodeid, mida saab kasutada mitme lõime jaoks. Kaks neist magavad ja ootavad.

SISU

1. Ülevaade ja peamised erinevused

2. Mis on uni Java-s

3. Mis on Java-s ootamine

4. Java- une ja ootamise sarnasused

5. Kõrvuti võrdlus - uni vs oota Java-s tabelina

6. Kokkuvõte

Mis on Java Java-s?

Operatsioonisüsteemis töötab mitu protsessi. Protsess on käivitatav programm. Igal protsessil võib olla mitu lõime ja nende lõimude vahel toimub kontekstivahetus. Java-s on lõime loomiseks kaks võimalust. See on niidiklassi laiendamine või Runnable liidese juurutamine. Klassil Niit on konstruktorid ja meetodid lõime toimingute loomiseks ja teostamiseks. Klass Thread laiendab objekti klassi ja rakendab Runnable liidest. Runnable liidese peaks juurutama iga klass, mille eksemplare kavatsetakse teostada lõimiga. Kui lõim käivitub, kirjutatakse käivitamismeetodi sisse käivitatav kood. Teema, mis peaks käima, valib lõime ajastaja. Ühes protsessis töötab ainult üks lõim.

Lõng läbib mitu faasi. Pärast lõime klassi objekti loomist saab programmeerija käivitada algusmeetodi. Enne selle meetodi kasutamist on niit väidetavalt uues olekus. Lõngade ajastaja valib käivitatava lõime. Kui lõime ajastaja pole veel lõime valinud, kuid kui käivitatakse algusmeetod, on niit käitatavas olekus. Pärast seda, kui lõime ajastaja valib täidetava lõime, läheb see üle jooksvasse olekusse. Kui lõime on elus, kuid praegu pole selle käitamiseks sobilik, on see mittejooksmis- või blokeeritud olekus. Pärast käitamismeetodi lõpuleviimist läheb lõng lõpetatud olekusse. Need on niidi elutsükli peamised etapid.

Erinevate ülesannete täitmiseks on lõimeklassis saadaval erinevad meetodid. Unemeetodit kasutatakse meetodi magamiseks kindla aja jooksul. Unemeetodi süntaks on avalik tühine uni (pikk millisekund) heidab katkestatud erandit. See põhjustab praegu käivitatava lõime peatamise ajutiselt määratud arvu millisekundite jooksul. Kui mõni teine lõime katkestab praeguse lõime, kustutatakse selle erandi viskamisel praeguse lõime katkenud olek.

Erinevus Java-režiimis une ja ootamise vahel
Erinevus Java-režiimis une ja ootamise vahel

Joonis 01: Java-programm unerežiimiga

Vastavalt ülaltoodud programmile sisaldab käitamismeetod koodi, mis tuleks käivitada. Põhiprogrammis luuakse kaks ExampleThread1 objekti ja neile käivitatakse algusmeetodid. See võimaldab käivitada koodi käitamismeetodi sees. Korraga käivitatakse ainult üks lõim. Niidiga. uni (1000); võimaldab esimesel lõimul lõpetada täitmise 1000 millisekundi jooksul. Kui lõime magab, võtab lõimeajataja teise lõime üles.

Mis on Java-s ootamine?

Jagatud ressursile võib juurde pääseda mitu lõime. See võib põhjustada vale väljundi genereerimise. Lõnga sünkroonimist saab kasutada ainult ühe lõime loomiseks, et pääseda jagatud ressursile juurde. Oletame olukorda järgmiselt. Kui on kaks lõime nagu t1 ja t2, hakkab t1 väärtusi salvestama tekstifaili nimega Text1.txt. Neid väärtusi kasutatakse mõnel muul arvutusel, kui t1 naaseb. Kui t2 algab enne t1 naasmist, saab t2 muuta t1 salvestatud väärtusi. See võib põhjustada t1 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. T2 ei saa seda muuta enne, kui t1 vabastab lukust, et sellele tekstifailile juurde pääseda. Kui ülesanne on täidetud, saab t1 luku vabastada. Lukk on tuntud ka kui monitor.

Lõnga sünkroonimise saab saavutada lõimidevahelise suhtlusega. Kriitiline jaotis on koodilõik, mis pääseb juurde jagatud ressurssidele. Lõngadevahelises suhtluses on lõng selle kriitilises osas töötamine peatatud ja samal kriitilises sektsioonis lubatakse käivitada veel üks lõim. Seda rakendatakse ootamise, teavitamise ja kõigi meetodite abil. Need kuuluvad klassi Object. Ootamismeetodit kasutatakse praeguse lõime lukust vabastamiseks ja oodake, kuni mõni teine lõime kutsub objekti meetodi teavitama või teatama kõik. Teavitamismeetodit kasutatakse ühe lukku ootava lõime äratamiseks. TeatisKõik äratab kõik lukul ootavad lõimed.

Erinevus une ja ootamise vahel Java Figure 02-s
Erinevus une ja ootamise vahel Java Figure 02-s

Joonis 02: Kalkulaatori klass

Peamine erinevus une ja ootamise vahel Java-s
Peamine erinevus une ja ootamise vahel Java-s

Joonis 03: peamine meetod

Klass Kalkulaator laiendab lõime. Sünkroonitud plokk on käitamismeetodi sees. For loopi ja teavitamise meetod on sünkroonitud plokis. Põhimeetodi sees kutsutakse sellel eksemplaril loodud lõime eksemplari ja algusmeetodit. Peamine meetod ootab, kuni lõim annab märguande. Programmi käivitamisel ootab põhimeetod kogu käivitamismeetodi täitmist ja ootab teatamismeetodit. Kui teatamismeetod on kutsutud, peatub peamine meetod ootamine ja hakkab ülejäänud koodi täitma. Main ootab, kuni kalkulaatori lõim on valmis. Lõpuks prinditakse summa tulemus.

Kui sünkroonitud plokki pole ja kui põhimeetodil on kood nagu allpool, annab see väljundiks nulli, kuna see ei oota teise lõime lõpuleviimist.

Kalkulaator t1 = uus kalkulaator ();

t1. algus ();

System.out.println (t1.sum);

Mis on Java-s une ja ootamise sarnasus?

Nii unerežiim kui ootamine on meetodid, mida saab Java-s mitmikeermelise juurutamisel rakendada

Mis vahe on Java-s une ja ootamise vahel?

Erinev artikkel keskel enne tabelit

uni vs oota Java-s

Unerežiim peatab praeguse lõime täitmise määratud arvuks millisekunditeks, sõltuvalt süsteemi taimerite ja ajastajate täpsusest ja täpsusest. Ootemeetod paneb praeguse lõime ootama, kuni mõni teine lõime kutsub objekti meetode teavitama või teatama.
Seos Lockiga
Unerežiim ei vabasta sünkroonimise ajal objekti lukku. Ootemeetod vabastab sünkroonimise ajal luku.
Täitmismeetod
Unerežiim käivitatakse praegusel lõimel. Objektil kutsutakse ootemeetodit.
Seotud klass
Uni on lõimeklassi meetod. Ootamine on klassi Object meetod.
Lõpetamine
Uneprotsess on lõpule viidud pärast määratud aja möödumist. Ootemeetod katkestatakse, helistades meetodeid teavitama või teavitama.

Kokkuvõte - uni vs oota Java-s

Operatsioonisüsteemis töötab mitu protsessi. Igal protsessil võib olla mitu lõime. Lõng on operatsioonisüsteemi väikseim töötlemisüksus. Java programmeerimiskeel toetab mitmekeelelist kasutamist. See võimaldab käivitada korraga mitu lõime. Unerežiim ja ootamine on kaks meetodit, mida saab kasutada mitme lõime rakendamisel. Java ja oote vahe Java-s seisneb selles, et unerežiimi kasutatakse praeguse lõime täitmise peatamiseks määratud arvu millisekundite jooksul, samas kui ootemeetodit kasutatakse praeguse lõime ootamiseks, kuni mõni teine lõim kutsub teavitama või teavitab kõiki meetod objekti jaoks.

Soovitatav: