Jelenlegi hely

19.3. Programszál életciklusa

A következő ábra bemutatja a szál különböző állapotait, amibe élete során tud kerülni, és illusztrálja, hogy melyik metódusok meghívása okozza az átmenetet egy másik fázisba. Az ábra nem egy teljes állapotdiagram, inkább csak egy áttekintés a szál életének fontosabb és egyszerűbb oldalairól. A továbbiakban is a Clock példát használjuk, hogy bemutassuk a szál életciklusát különböző szakaszaiban.

Programszál életciklusa

Programszál létrehozása

Az alkalmazás, melyben egy szál fut, meghívja a szál start metódusát, amikor a felhasználó a programot elindítja. A Clock osztály létrehozza a clockThread szálat a start metódusában, ahogy a lenti programkód bemutatja:

public void start() {
    if (clockThread == null) {
        clockThread = new Thread(this, "Clock");
        clockThread.start();
    }
}

Miután a kiemelt utasítás végrehajtódik, a clockThread az „új szál” (New Thread) állapotban van. Egy szál ebben az állapotában csupán egy üres szál, semmiféle rendszererőforrás nincs hozzárendelve. Ebben az állapotban csak elindítható a szál. A start metóduson kívül bármilyen metódus meghívása értelmetlen, és IllegalThreadStateException kivételt eredményez. (Alapértelmezetten a rendszer mindig ezt a hibaüzenetet dobja, ha egy olyan metódus kerül meghívásra, amelyik a szál pillanatnyi állapotában nem engedélyezett.)

Érdemes megjegyezni, hogy a Clock típusú példány az első paraméter a szál konstruktorban. Ez a paraméter meg kell, hogy valósítsa a Runnable interfészt, csak így lehet a konstruktor paramétere. A Clock szál a run metódust a Runnable interfésztől örökli. A konstruktor második paramétere csupán a szál neve.