Bevezetés a szál életciklusához a Java-ban

Egy szál az életciklus számos szakaszát megtapasztalja. Mint például egy szál jön a világba, elindul, fut és utána elmúlik. A következő ábra ismerteti a szál teljes életciklusát.

  • A Thread Constructor egy szálat hoz létre egy új állapoton keresztül.
  • A szál kezdeményezése a szálban elindítja a futtatható állapotot.
  • A Java-menetrend-ütemező futtatja ezt a szálat, amikor a processzor megkapja.
  • Amikor a szál blokkolt állapotba kerül, akkor ismét futni fog, mert visszatér futtatható állapotba.
  • Ha a várakozási módszerre szálként hivatkoznak, akkor az állapot várakozásra kerül, akkor hamarosan futtatható állapotba kerül, miután az egész értesítésben értesítéssé válik, valamint az összes módszer értesítésére.
  • A szál véget ér, ha a futási módszer leáll.

Mi az a szál?

A szál meghatározása az operációs rendszer szintjén történik. És a Java nyelv, valamint az összes többi nyelv használja, kihasználja az operációs rendszer által nyújtott szolgáltatást. A fejlesztő szempontjából a szál olyan utasítások halmaza, amelyekkel megírjuk az alkalmazásunkat, és bizonyos módon végrehajtjuk. Maga az alkalmazás több szálból is állhat. Különböző szálak futtathatók egyszerre. A JVM (Java virtuális gép) több szállal működik. Vannak szálak a szemétgyűjtéshez. Vannak szálak a Just in Time fordítóhoz és más műszaki szálakhoz.

A menet életciklusának állapota Java-ban

Az alábbiakban bemutatjuk a Java életciklusának különböző állapotait:

1. Új: Egy új szál elkezdi életciklusát az új állapotban. Ez a helyzet továbbra is fennáll, mielőtt a program megkezdi a szálat. Ezenkívül létrehozott szálként is ismert.

2. Futtatható: Miután egy nemrégiben született szál megkezdődhet, a szál futtathatóvá válik. Az ilyen állapotú szálakat úgy tekintik, hogy végrehajtják a folyamatot.

3. Várakozás: Időnként egy szál átmenet az állam körüli várakozás felé, még akkor is, ha a szál egy másik szálra vár egy tevékenység végrehajtására. A szálak csak akkor lépnek vissza a futtatható állapotba, ha egy további szál jelzi a várakozó szálat, hogy továbbra is teljesüljön.

4. Időzített várakozás: A futtatható szál könnyedén lecsökkenti az adott időzített várakozást, amíg az állapot megad egy bizonyos időintervallumot. Az ilyen állapotátmenetekkel rendelkező szálak visszatérnek a futtatható állapotba, miután a pont-intervallum lejár, vagy ha történik az az esemény, amely valóban vár.

5. Megszűnt: A futtatható szál a lezárt állapotba kerül, mert elvégzi a feladatát, vagy pedig megszűnik.

Hogyan hozhatunk létre szálat Java-ban?

A szálak létrehozásának alapvető módja a Java-ban a Runnable Pattern használata. Először létre kell hoznia a Runnable felület példányát, ami nagyon egyszerű; csak egy módszer valósítható meg. Akkor átadjuk ezt a példányt a szál osztály kivitelezőjének. És akkor csak meghívjuk a létrehozott szál-objektum start () módszerét, hogy elindítsunk egy új szálat, amely futtatni fogja a Futtatható objektumba csomagolt feladatot.

Tehát először hozzon létre egy futtatható példányt. Csak egy módszer valósítható meg, amelyet run () módszernek hívnak. Ezt a Java 7 mintázat teszi lehetővé, anonim osztály példányával. De lambda kifejezést is használhatunk a Runnable megvalósításához, mivel csak egy módszer van a Runnable felületen.

Hozzunk létre szálakat nagyon egyszerű példákra

Meg fogjuk vizsgálni, hogy mi lehet a baj egy olyan versenyfeltétel esetén, amely a szinkronizálatlan kóddal van, amelyet szinkronizálni kell, és szinkronizálás segítségével rögzítjük a kódot. Ez az első példa nagyon egyszerű, nagyon alapvető. Csak egy feladat létrehozásáról szól.

Kimenet:

A feladat a Runnable interfész példánya, nevezzük futtathatónak, és ezt a felületet lambda kifejezéssel valósíthatjuk meg. Ezt a feladatot egy új szálnak adják, és ennek a szálnak a keretében hajtják végre. Tehát ki fogjuk nyomtatni a szál nevét, amely ezt a feladatot futtatja. Futok benne. A Thread.currentThread () a szál osztály statikus módszere, amely visszaadja az aktuális feladatot futtató szálat. És csak a getName () -et kell meghívnunk ezen szál-objektumon, hogy visszaadjuk a szál nevét. Ezután egy szálpéldány létrehozása után t = új szál. A futtathatóság átadása paraméterként. Tehát ez a szál végrehajtja ezt a kóddarabot. És hogy elindítsam. t.start () ez a start () módszer, amelyet fel kell hívnunk. Azt is megtehetjük, hogy kifejezetten megnevezzük ezt a szálat az t.setName („Saját szál”) használatával. És most végrehajthatjuk ezt a kódot. Most a call () metódus helyett a run () metódust hívjuk, és ha ezt a kódot futtatjuk, akkor az a probléma, hogy a feladat helyesen hajtódik végre, de nem az általunk létrehozott szálat hajtják végre. A fő szálban hajtják végre, amely a fő módszert végrehajtó szál. Tehát ezt a run () módszert nem szabad meghívni, ha új szálat akarunk indítani.

Kimenet:

A szálak életciklusának módszerei a Java-ban

Az egyszerűen a szál által leírt módszereket a 4. táblázat tartalmazza.

AdattípusokMenet módszer nevek
Húr

getName ()

Visszaadja ennek a szálnak a nevét

intszerezz prioritást ()

Visszaadja a szál prioritását

logikaiéletben van()

Teszteli, hogy ez a szál továbbra is fut-e

ürescsatlakozik()

Várakozik ennek a szálnak a halálára (megszűnik)

üresfuss()

Amikor ezt a szálat egy egyedi Runnable objektum felhasználásával építették, akkor azt követően, amelyet általában a Runnable objektum futtatási módszerének hívnak; Ellenkező esetben, ez a módszer semmi esetre sem tér vissza. Amikor a szálosztály kibővíthető, a run () metódus túlterhelésre kerül az alosztály alatt, akkor egy overredden run () metódust hívnak.

üressetName ( karakterlánc neve )

Megváltoztatja a nevet ezzel a szállal, hogy összehasonlíthatóvá váljon az argumentum nevével.

statikus semmis

alvás ( hosszú millis ) megszakítja / kivétel
A jelenlegi teljesítő szálra pihentet
a szükséges mennyiség milliszekundumban.
statikus semmisalvás ( hosszú millis, int nanos ) dob InterruptedException

Elvégzi, hogy a jelenleg működő szál aludjon (beszüntesse a végrehajtást) a szükséges milliszekundummennyiséghez, valamint az adott nanoszekundum-mennyiséghez.

üresRajt()

Beindítja ezeket a szálakat a végrehajtás megkezdéséhez; a Java virtuális gép meghívja az adott szál futtatási módszerét.

statikus semmishozam()

Beindítja a jelenlegi szálobjektumot, hogy röviden szüneteltesse és engedélyezze a további szálak végrehajtását.

statikus szálcurrentThread ()

Visszaadja a jelenleg futó szál objektum említését.

Következtetés

  • A szálak használatának megkezdése egyszerű, rendkívül nehéz megérteni.
  • A menetbiztos módszereket tartalmazó osztályok megtervezése kihívást jelent.
  • Olvassa: JavaDoc, hogy megkapja a java.lang.Thread osztályt

Ajánlott cikk

Ez egy útmutató a szál életciklusához a Java-ban. Itt megvitatjuk, mi a szál? és a szálak életciklusának különböző állapotai, valamint a szálak létrehozása a java-ban. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Keretek a Java-ban
  2. Csillagminták Java-ban
  3. Merge Sort a Java alkalmazásban
  4. A legjobb Java fordítók
  5. Statikus módszer a PHP-ben

Kategória: