Dovresti passare al Thread da avviare in ritardo un puntatore al Thread padre, avviare subito il thread figlio ed aspettare nel thread figlio che il thread padre joini (aspetta la conclusione del thread padre) e poi le operazioni dopo il join del thread verranno eseguite dopo la conclusione del thread padre.
Ho fatto quest'esempio
codice:
class RunnableChild implements Runnable {
public Thread parent;
@Override
public void run() {
try {
System.out.println("Aspetto il join del thread principale ...");
parent.join();
System.out.println("Thread principale joinato!");
Thread.currentThread().sleep(5000);
System.out.println("Fine thread figlio!");
} catch (Exception ex) {
ex.printStackTrace();
}
}
public RunnableChild(Thread parent) {
this.parent = parent;
}
}
Thread child = new Thread(new RunnableChild(Thread.currentThread()));
child.start();
System.out.println("main() End!");
}
Credo sia questo quello che intendevi