Diciamo che stavo lavorando su un'applicazione Swing. La maggior parte viene eseguita su EDT usando SwingUtilities.invokeLater()
nel metodo main
, perché ho sentito (correggimi se ho torto) che è quello che devi fare con Swing.
Tuttavia, alcune parti di esso non dovrebbero essere eseguite sull'EDT. Queste parti sono parti che richiedono molto tempo per essere completate (presumo che ciò avvenga perché le attività lunghe sull'EDT interferiranno con le operazioni della GUI che l'EDT dovrebbe svolgere, e quindi questi tipi di attività dovrebbero essere eseguiti in parallelo, su un thread diverso. questa ipotesi è corretta?)
Per fare ciò, quando ho bisogno di eseguire un compito che richiede molto tempo per essere completato e quindi non può essere eseguito sull'EDT come il resto del programma, creo un nuovo thread ed eseguo quell'attività al suo interno.
La mia domanda è: quando termina il metodo run()
di quel nuovo thread, ovvero il thread termina il suo lavoro. Si elimina da solo? O continua a esistere nella memoria?