Keerme elutsükli tutvustus Java-s

Niit kogeb elutsükli arvukaid faase. Niit tuleb näiteks maailma, algab, jookseb ja pärast seda kaob. Järgnev diagramm selgitab lõime täielikku elutsüklit.

  • Niitkonstruktor loob niidi läbi uue oleku.
  • Keermestamismeetodi algkõne võib muuta selle käivitatavaks.
  • Thread Scheduler Java kohta käivitab selle lõime protsessori vastuvõtmisel.
  • Kui niit läheks blokeeritud olekusse, siis see käivitatakse uuesti, kuna see naaseb uuesti käitatavasse olekusse.
  • Kui ootamismeetodile viidatakse kui niidile, läheks olek ootamisele, läheks see käivitatavasse olekusse varsti pärast seda, kui sellest saab teavitus kogu infor-sioonis ja teatatakse kõigist meetoditest.
  • Niit lõpeb, kui töömeetod lõpeb.

Mis on niit?

Niit on määratletud opsüsteemi tasemel. Ja Java keel, nagu ka kõik muud keeled, kasutab, võimendab seda teenust, mida pakub operatsioonisüsteem. Arendaja seisukohast on niit juhiste kogum, mille abil kirjutame oma rakenduse ja täidame seda teatud viisil. Rakendus ise võib koosneda mitmest lõimast. Samaaegselt saab täita erinevaid lõime. JVM (Java Virtual Machine) töötab mitme lõimega. Prügivedu jaoks on niidid. Seal on niidid kompilaatori Just in Time ja muude tehniliste lõimede jaoks.

Keerme elutsükli olekud Java-s

Allpool on toodud Java lõimetsükli erinevad olekud:

1. Uus: uus niit alustab nende olelusringi uues olekus. Selle olekuga on see enne programmi lõime alustamist. Lisaks tuntakse seda kui loodud lõime.

2. Runnable: pärast hiljuti sündinud lõime algust saab lõim runnable'iks. Selle olekuga niiti peetakse nende protsessi läbiviijaks.

3. Ootamine: aeg-ajalt toimub niidi üleminek oleku ümber ootamisele, ehkki niit ootab toimingu teostamiseks uut lõime. Niit siirdub käitatavasse olekusse tagasi ainult siis, kui täiendav niit näitab ootel olevat lõime, mida jätkata.

4. Ajastatud ootamine: käivitatav niit saab hõlpsasti konkreetse ajastatud ootamise, kuni olek saab kindla ajavahemiku. Selle olekuga üleminekute niit naaseb käitatavasse olekusse pärast selle punktivahemiku möödumist või kui juhtub sündmus, mida see tõeliselt ootab.

5. Lõpetatud: käivitatav lõng satub lõpetatud olekusse, kuna see täidab ülesande või lõpeb.

Kuidas lõime Java-s luua?

Kõige lihtsam viis lõime loomiseks Java-s on kasutada käivitatavat mustrit. Esmalt peate looma käitatava liidese eksemplari, mis on väga lihtne; rakendamiseks on ainult üks meetod. Seejärel edastame selle eksemplari klassi lõime konstruktorile. Ja siis kutsume lihtsalt selle loodud lõimeobjekti start () meetodit käivitama uue lõime, mis käivitab meie käitatavasse objekti pakitud ülesande.

Nii et kõigepealt loome käitatava eksemplari. Rakendamiseks on ainult üks meetod, mida nimetatakse run () meetodiks. Anonüümse klassi esinemisjuhu korral on selleks Java 7 muster. Kuid käitatava rakenduse rakendamiseks võime kasutada ka lambda-avaldist, kuna käitatavas liideses on ainult üks meetod.

Loome niidid väga lihtsate näidete jaoks

Vaatame, mis võib valesti minna võistlusolukorras, kus sünkroniseerimata kood peaks olema sünkroniseeritud, ja parandame oma koodi sünkroonimise abil. See esimene näide on väga lihtne, see on väga lihtne. See on lihtsalt ülesande loomine.

Väljund:

Ülesanne on käivitatava liidese eksemplar, nimetagem seda käitatavaks ja saame selle liidese rakendada lambda-avalduse abil. See ülesanne antakse uuele lõimele ja täidetakse selle lõime kontekstis. Nii et prindime lihtsalt selle lõime nime, mis seda ülesannet töötab. Ma töötan … Thread.currentThread () on teema lõime staatiline meetod, mis tagastab praegust ülesannet juhtiva lõime. Ja niidi nime tagastamiseks peame selle lõimeobjekti jaoks lihtsalt helistama getName (). Siis, kui oleme lõime lõime, on t = uus niit. Selle käitatava parameetri edastamine. Nii et see lõim hakkab seda kooditükki täitma. Ja selle käivitamiseks. t.start () see on algus () meetod, millele peame helistama. Mida me ka teha saame, on anda selle lõime selgesõnaline nimi, kasutades faili t.setName (“Minu teema”). Ja nüüd saame selle koodi käivitada. Nüüd kutsume kõne alustamise () meetodi asemel käsu run () meetodiks ja selle koodi käivitamisel on probleem selles, et ülesanne on õigesti täidetud, kuid seda ei teostata meie loodud lõimes. See täidetakse peamises lõimes, mis on põhimeetodi täitev lõim. Seega ei tohiks seda run () meetodit nimetada, kui soovime käivitada uue lõime.

Väljund:

Keerme elutsükli meetodid Java-s

Lihtsalt niidi abil kirjeldatud meetodid on esitatud tabelis 5.

AndmetüübidKeerme meetodi nimed
Keel

getName ()

Tagastage selle lõime nimi

intsaada prioriteet ()

Tagastab lõime prioriteedi

loogilineon elus()

Testib, kas see niit ikka töötab

tühineliitu ()

Oodatakse, kuni see lõng sureb (lõpeb)

tühinejooksma ()

Kui see lõng ehitati üksiku käitatava objekti abil, nimetatakse seda tavaliselt käitatava objekti käitamismeetodiks; või muidu, see meetod ei anna mitte midagi sama hästi kui naaseb. Alati, kui niidiklassi saab laiendada, kasutatakse alamklassi ajal run () meetodit üle, siis nimetatakse ületreenitud run () meetodit.

tühinesetName ( stringi nimi )

Muudab selle lõimega nime argumendi nimega võrreldavaks.

staatiline tühine

uni ( pikk millis ) viskab Katkestatud / Erand
Paneb praegu toimiva niidi puhkama
vajalik kogus millisekundit.
staatiline tühineuni ( pikk millis, int nanos ) viskab InterruptedException

See põhjustab praegusel ajal toimiva niidi une (lakkab täitmise) nii millisekundite vajaliku koguse kui ka nanosekundite konkreetse koguse jaoks.

tühinealgus ()

Käivitab need lõimed täitmise alustamiseks; Java virtuaalmasin kutsub selle lõime käitamismeetodit.

staatiline tühinesaagikus ()

Lülitab praeguse lõimeobjekti korraks peatamiseks ja täiendavate lõimede käivitamiseks.

staatiline niitcurrentThread ()

Tagastab praegu täidetava lõimeobjekti mainimise.

Järeldus

  • Niidide kasutamist on lihtne alustada, äärmiselt raskesti haaratav.
  • Klasside kavandamine, mis sisaldavad keermekindlaid meetodeid, on keeruline.
  • Loe: JavaDoc, et saada klass java.lang.Thread

Soovitatav artikkel

See on olnud Java lõime elutsükli juhend. Siin arutame, mis on niit? ja lõimede olelustsükli erinevad olekud koos lõimede loomisega javas. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Raamid Java
  2. Tähemustrid Java-s
  3. Ühenda sortimine Java-s
  4. Parimad Java kompilaatorid
  5. Staatiline meetod PHP-s

Kategooria: