PDA

View Full Version : [JAVA] chiusura di processi e System.exit(0)


Lord_Brisingr
21-12-2014, 23:54
Ciao a tutti, programmando una semplice Console application mi sono imbattuto in un fastidioso bug proprio alla fine del codice che ho provato a risolvere interrompendo il codice. In C# normalmente dichiaravo un processo e poi lo killavo e così ho provato a fare in java, solamente che non ci sono riuscito (Ho usato java.interrupt() ). Cercando in internet mi sono imbattuto nella funzione System.exit(0) che ho provato e a quanto pare funziona. Ora vorrei chiedervi, è buona norma usare questa funzione? Potrebbe provocare problemi? Sapreste indicarmi un'alternativa nel caso? Grazie mille a tutti.

Daniels118
22-12-2014, 09:09
La risposta è: dipende.

Dal punto d vista del rilascio delle risorse il metodo è sicuro perché termina l'intero processo della jvm; se non lo fa l'implementazione della jvm, con ogni probabilità il sistema operativo libera tutte le risorse allocate dal processo.

Dal punto di vista applicativo invece il programmatore deve sapere cosa sta facendo. In un'applicazione multithread un thread potrebbe essere impegnato a salvare un file o in altre operazioni di vitale importanza; se in quel momento un altro thread chiama il metodo exit quell'operazione viene interrotta.

La jvm si chiude automaticamente quando tutti i suoi thread non-demoni terminano; se ne hai la possibilità utilizza questo metodo.

Se vuoi ritornare un exit code diverso da zero al sistema operativo devi utilizzare per forza il metodo exit, quindi fai attenzione a quanto detto prima.