Pagrindinis skirtumas - miegas ir laukimas „Java“
Miegas ir laukimas yra du metodai, naudojami daugialypiam gijimui „Java“. Miego metodas priklauso „Thread“klasei, o laukimo metodas priklauso nuo „Object“klasės. Pagrindinis „Java“miego ir laukimo skirtumas yra tas, kad miego režimas naudojamas sustabdyti dabartinės gijos vykdymą nurodytam milisekundžių skaičiui, o laukimo metodas naudojamas norint priversti dabartinę giją laukti, kol kita gija iškvies pranešimą arba Pranešti apie visą objekto metodą.
Siūlas yra mažiausias operacinės sistemos apdorojimo vienetas. Tai yra vienas nuoseklus valdymo srautas programoje. Siūlai yra lengvi. Keli siūlai yra kelių gijų vienu metu paleidimo mechanizmas. Programavimo kalbos, tokios kaip „Java“, palaiko daugialypį gijimą. Daugialypis sriegimas turi pranašumų, nes leidžia vienu metu paleisti kelias gijas ir gijos yra nepriklausomos viena nuo kitos. „Java“yra metodų, kuriuos galima naudoti daugialypiam gijimui. Du iš jų miega ir laukia.
TURINYS
1. Apžvalga ir raktų skirtumas
2. Kas yra „Java“miegas
3. Kas yra „Java“laukimas
4. „ Java“miego ir laukimo panašumai
5. Šoninis palyginimas - miegas ir laukimas „Java“lentelėje
6. Santrauka
Kas yra miegas „Java“?
Operacinėje sistemoje veikia keli procesai. Procesas yra vykdoma programa. Kiekvienas procesas gali turėti kelias gijas ir tarp šių gijų vyksta konteksto perjungimas. „Java“yra du būdai sukurti giją. Tai yra išplėsdami gijų klasę arba įdiegdami „Runnable“sąsają. „Thread“klasėje yra konstruktoriai ir metodai, kaip sukurti ir atlikti gijos operacijas. „Thread“klasė praplečia objektų klasę ir įdiegia „Runnable“sąsają. „Runnable“sąsają turėtų įdiegti bet kuri klasė, kurios egzempliorius ketinama vykdyti gijomis. Vykdant giją, vykdymo metodas įrašomas kodas, kurį turėtų vykdyti. Giją, kurią turėtų paleisti, pasirenka gijų planavimo priemonė. Viename procese vykdoma tik viena gija.
Siūlas eina per keletą fazių. Sukūręs „Thread“klasės objektą, programuotojas gali pasinaudoti pradžios metodu. Prieš pradedant taikyti šį metodą, sakoma, kad gija yra naujoje būsenoje. Gijų tvarkaraštis parenka vykdomą giją. Jei gijos tvarkaraštis dar nepasirinko gijos, bet jei naudojamas pradžios metodas, gija yra vykdoma būsena. Kai gijų planavimo priemonė pasirenka vykdomą giją, ji pereina į veikimo būseną. Jei gija yra gyva, bet šiuo metu jos negalima paleisti, ji yra nevykdoma arba užblokuota. Baigus paleidimo metodą, gija pereina į baigtą būseną. Tai yra pagrindiniai siūlų gyvavimo ciklo etapai.
Siūlų klasėje yra įvairių būdų, kaip atlikti skirtingas užduotis. Miego metodas naudojamas miegoti metodui tam tikrą laiką. Miego metodo sintaksė yra viešojo tuštumo miegas (ilgos milisekundės), išmetantis „InterruptedException“. Dėl to šiuo metu vykdoma gija sustabdo vykdymą laikinai nurodytu milisekundžių skaičiumi. Jei kita gija nutraukia dabartinę giją, nutraukus dabartinės gijos būseną, ši išimtis ištrinama.
01 pav. „Java“programa su miego metodu
Pagal pirmiau nurodytą programą vykdymo metodas turi kodą, kuris turėtų būti vykdomas. Pagrindinėje programoje yra sukurti du „ExampleThread1“objektai ir juose iškviečiami paleidimo metodai. Tai leis paleisti kodą vykdymo metodo viduje. Vienu metu vykdoma tik viena gija. Su siūlu. miegas (1000); leis pirmajai gijai nutraukti vykdymą 1000 milisekundžių. Kai gija miega, gijų planuoklis pasiima kitą giją.
Kas yra laukimas „Java“?
Kelios gijos gali pasiekti bendrinamą šaltinį. Tai gali sukelti neteisingą išvestį. Gijų sinchronizavimas gali būti naudojamas norint sukurti tik vieną giją, kad būtų galima pasiekti bendrinamą šaltinį. Tarkime, kad situacija yra tokia. Jei yra dvi gijos kaip t1 ir t2, t1 pradeda įrašyti reikšmes į tekstinį failą, pavadintą Text1.txt. Tos vertės bus naudojamos atliekant kitą skaičiavimą, kai grįš t1. Jei t2 prasideda dar negrįžus t1, t2 gali pakeisti t1 išsaugotas reikšmes. Tai gali sukelti t1 neteisingą išvestį. Sinchronizavimo pagalba, kai t1 pradeda naudoti Text1.txt failą, tą failą galima užrakinti, todėl prie jo gali prisijungti tik t1. T2 negali jo pakeisti, kol t1 atleis užraktą, kad būtų galima pasiekti tą tekstinį failą. Atlikus užduotį, t1 gali atlaisvinti užraktą. Spyna taip pat žinoma kaip monitorius.
Siūlų sinchronizavimą galima pasiekti tarpusavio ryšiu. Kritinis skyrius yra kodo segmentas, kuris pasiekia bendrus išteklius. Tarpgijų komunikacijoje gija yra pristabdyta, vykdant jos kritinę sekciją, ir kitai gijai leidžiama įeiti į tą pačią kritinę sekciją, kuri bus vykdoma. Jis įgyvendinamas naudojant laukimo, pranešimo ir pranešimo visus metodus. Jie priklauso Object klasei. Laukimo metodas naudojamas leidžiant dabartinei gijai atlaisvinti užraktą ir palaukti, kol kita gija iškvies objekto metodą „Pranešti arba pranešti“. Pranešimo metodas naudojamas pažadinti vieną giją, kuri laukia užrakto. „Pranešti viską“pažadina visas užrakto laukiančias gijas.
02 paveikslas: skaičiuoklės klasė
03 pav. Pagrindinis metodas
Skaičiuoklės klasė pratęsia siūlą. Sinchronizuotas blokas yra vykdymo metodo viduje. Metodas „ciklas ir pranešimas“yra sinchronizuoto bloko viduje. Pagrindinio metodo viduje yra sukurtas gijos egzempliorius ir pradžios metodas. Pagrindinis metodas lauks, kol gija pateiks pranešimą. Vykdant programą, pagrindinis metodas palaukia viso vykdymo metodo vykdymo ir laukia pranešimo metodo. Iškvietus pranešimo metodą, pagrindinis metodas nustoja laukti ir pradeda vykdyti likusį kodą. Pagrindinis laukia, kol bus baigta skaičiuoklės gija. Galiausiai atspausdinamas sumos rezultatas.
Jei nėra sinchronizuoto bloko ir jei pagrindinis metodas turi kodą, kaip nurodyta toliau, jis suteiks išvestį kaip nulį, nes jis nelaukia, kol baigsis kitas siūlas.
Skaičiuoklė t1 = nauja skaičiuoklė ();
t1. pradžia ();
System.out.println (t1.sum);
Koks yra „Java“miego ir laukimo panašumas?
Tiek miegas, tiek laukimas yra metodai, kuriuos galima naudoti diegiant daugialypį gijimą „Java“
Koks skirtumas tarp „Java“miego ir laukimo?
Skirtingas straipsnis viduryje prieš lentelę
miegas vs laukimas Java |
|
Miego metodas priverčia dabartinę giją sustabdyti vykdymą nurodytu milisekundžių skaičiumi, atsižvelgiant į sistemos laikmačių ir tvarkaraščių tikslumą ir tikslumą. | Laukimo metodas priverčia dabartinę giją laukti, kol kita gija iškviečia objekto metodą „Pranešti arba pranešti“. |
Asociacija su Locku | |
Miego metodas neatleidžia objekto užrakto sinchronizavimo metu. | Laukimo metodas sinchronizavimo metu atleidžia užraktą. |
Vykdymo metodas | |
Miego metodas vykdomas ant dabartinio sriegio. | Objekte iškviečiamas laukimo metodas. |
Asocijuota klasė | |
Miegas yra „Thread“klasės metodas. | Laukimas yra Objektų klasės metodas. |
Baigimas | |
Miego procesas baigiamas pasibaigus nurodytam laikui. | Laukimo metodas nutraukiamas iškvietus pranešimo arba pranešimo visus metodus. |
Santrauka - miegas prieš laukimą „Java“
Operacinėje sistemoje veikia keli procesai. Kiekvienas procesas gali turėti kelias gijas. Gija yra mažiausias operacinės sistemos apdorojimo vienetas. „Java“programavimo kalba palaiko daugialypį gijimą. Tai leidžia vienu metu paleisti kelias gijas. Miegas ir laukimas yra du metodai, kuriuos galima naudoti diegiant daugiasriegius siūlus. „Java“skirtumas tarp miego ir laukimo yra tas, kad miego režimas naudojamas sustabdyti dabartinės gijos vykdymą nurodytam milisekundžių skaičiui, o laukimo metodas naudojamas norint, kad dabartinė gija lauktų, kol kita gija iškvies pranešti arba pranešti Visiems objekto metodas.