Gyakorlati alapok III.

A totálisan destruktív magatartás: a System.exit() metódus

 

Az előző, A részlegesen destruktív magatartás: a virtuális szemétgyűjtés című fejezetben ismertetett System.gc() függvény eltakarít a memóriából minden, már nem használt kódot. A metódus fő jellegzetessége, hogy hívásakor nem fut le azonnal, a metódushívás csak egy "baráti ajánlat" a Java-rendszer felé, hogy legyen szíves, ha lesz 1 kis ideje, a kódszemetet takarítsa el.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Ezzel ellentétben System.exit() függvény hívása azonnal végrehajtásra kerülő programleállást fog eredményezni.

 

Természetesen ez sem eszetlen módon lesz kivitelezve: a függvény teljes leállás előtt megszünteti az összes szálat (thread), bezárja a megnyitott fájlokat, valamint felszabadítja az erőforrásokat. Erre az aprólékos terminálására egyébként szükség is van, hiszen minél komplexebb egy Java-program, annál nagyobb a valószínűsége, hogy a main() metódus végére érve valami még mindig fut, amely lefoglalja magát a JVM-et is.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Következésképpen a System.exit() függvényhívás megszünteti mind a Java-alkalmazást, mind az aktuális Java-futtató környezetet (JVM).

 

A függvényre legtöbbször a kódban a System.exit(0) kifejezéssel hivatkoznak. A nem 0 érték abnormális leállást jelez, amelyet a JVM már nem tud kiértékelni, hiszen az már szintén leállt, de az érték például egy Windows-batch fájlban elkapható. A System.exit() függvényhívás egyenértékű a Runtime.getRuntime().exit(n) metódushívással.
 

A System.exit() függvény működésének megismeréséhez nézzünk meg egy egyszerű, futtatható Java-kódot. Egy for ciklusban az i iterátor egyre növekvő értékeit figyeljük és írjuk ki elméletileg 10-ig, de i = 5 felett a program (vele le fog állni a terminátor függvény hívása miatt:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


class Main{
public static void main(String args[]){
    for(int i = 1; i < 10; i++){

        System.out.print(i + " ");

        if(i == 5){

            System.exit(0);

            }

        }
    }
}
 

Végeredmény:

1 2 3 4 5