Jelenlegi hely

19. Programszálak kezelése

A programok jelentős része soros végrehajtású. Van kezdetük, egy végrehajtandó rész és egy befejezés. A program csak bizonyos időszakaszokban fut, hiszen a processzor már programokat is futtat.

A szál (thread) hasonló a soros programhoz. A szálnak is van kezdete, egy végrehajtandó része és egy befejezése. A szál is csak bizonyos időszakaszokban fut. De a szál maga nem egy program, a szálat nem lehet önállóan futtatni. Inkább úgy tekinthetjük, hogy a program részeként fut. A következő ábra megmutatja a kapcsolatot.

Thread - Egy szál

Definíció: A szál egy egyedülálló irányító folyamat a programon belül.

Persze nem arra használjuk a szálakat, hogy csak egyet alkalmazunk, inkább több szálat futtatva egy időben különböző feladatokat elvégezve egyetlen programban. A következő kép ezt illusztrálja.

Two thread - két szál

A böngésző programunk is egy példa a többszálú alkalmazásra. Egy általános böngészőben egy oldalon belül egyszerre történik egy kép, applet letöltése, mozgó animáció vagy hang lejátszása, az oldal nyomtatása a háttérben, miközben egy új oldalt tölt be vagy éppen három rendező algoritmus versenyét tekintheti meg.

Néha a szálat könnyűsúlyú processznek nevezik, mert egy teljes programon belül fut, annak lefoglalt erőforrásait és a futtató környezetét használja.

Mint irányító folyamat, a szálnak is kell saját erőforrásokkal rendelkeznie. Rendelkezni kell egy végrehajtó veremmel és a programszámlálóval. Ebben a környezetbe fut a szál kódja. Néhol ezt a környezetet a szál fogalom szinonimájának nevezik.

A szál programozás nem egyszerű. Ha mégis szálakat kell használni, akkor érdemes a magas-szintű szál API-kat használni. Példaképpen, ha a programban egy feladatot többször kell elvégezni, érdemes a java.util.Timer osztályt alkalmazni. A Timer osztály időzítéses feladatoknál is hasznos lehet. Erre hamarosan látunk példát.