La exec() di per sé è "asincrona". Ritorna praticamente subito e non attende mai la terminazione di ciò che ha lanciato.Originariamente inviato da VioletFairy
Se io chiamo in dal mio codice Java tramite la exec() un'applicazione (chiamiamola SecondApp) un pò più pesante di firefox, quest'ultima si impalla finchè non chiudo la finestra relativa alll'interfaccia grafica della mia applicazione...
Se però chiamo chiamo SecondApp e la mia applicazione Java separatamente ma contemporaneamente non si impalla niente.
Sembra come se le risorse necessarie da SecondApp siano gestite dalla mia applicazione che non ce la fa a gestire le due applicazioni insieme.
Nn c'è modo per lanciare un'altra applicazione e non curarsi più di lei?
È il waitFor() di Process che attende la terminazione del processo lanciato. Lo fa sospendendo il thread corrente. Se il thread corrente fosse il EDT (event dispatch thread), cioè quello usato per invocare i metodi dei listener ..... tu lo stai praticamente "impegnando" (tenendolo sospeso) e quindi in pratica tutta la tua interfaccia utente è "congelata".
Ma non è un problema della exec o del processo lanciato .... ma del threading in Swing!