Salve a tutti avrei un poco di questioni riguardo i thread ( ho visto che ci sono parecchie discussioni riguardanti i thread, ma non sono riuscito a trovare le risposte alle mie domande... forse troppo banali

Come prima cosa l'applicazione che mi da problemi consiste di due thread separati uno che rimane in ascolto ( thread main ) l'altro che lancia tramite reflection un altro programma esterno. Il codice per la creazione del thread figlio è il seguente:

codice:
public class LauncherImpl implements Launcher, Runnable {

private String targetClass;
private volatile Thread t;

public LauncherImpl() {
t = new Thread(this, "TargetApplication");
}

public void run() throws InitializationException {
// qui lancio l'altro programma tramite reflection
}

public void start(String targetClass) throws InitializationException {
this.targetClass = targetClass;
t.start();

}

public void stop() throws InitializationException {
t = null;
}

}
ora con questo codice ho alcuni problemini:

1) se crasha il programma che richiamo sul thread figlio tramite reflection crasha anche il thread principale e quindi tutta l'applicazione

2) se invoco il metodo stop() l'applicazione lanciata sul thread tramite reflection continua ad esistere ed invece vorrei che terminasse ( ma solo l'applicazione target )

3) esiste un modo per richiamare il thread figlio senza passare l'istanza dell'oggetto da una parte ad una altra delle classi?

grazie a tutti per l'aiuto