Pessoal, após executar o comando ‘gerenciador.start()’ , meu programa não retorna para a função main, e não printa a mensagem ‘acabou’; ele simplesmente executa o comando que falei. Alguém sabe por que isso acontece ?
public static void main(String[] args)
{
gerenciador.start();
//elev.start();
System.out.println("acabou");
}
se vc lida com threads, vc tem que saber trabalhar com a sincronização das mesmas.
se o que vc executa no start criar uma thread nova, em tese vc vai executar de forma independente da thread corrente e em algum momento vc vera o “acabou” enquanto o start executa.
vc precisa pegar a thread que o gerenciador inicia e chamar join pra ter certeza que o “acabou” vai executar depois da thread
public class A implements Runnable {
public void run() {
for(int i = 1; i< 5; i++ ){
System.out.println("i="+i);
try { Thread.sleep(1000); } catch ( InterruptedException ie ) { ie.printStackTrace(); }
}
}
public Thread start() { Thread t = new Thread( this ); t.start(); return t; }
public static void main(String arg[]) throws InterruptedException {
A a = new A();
Thread t = a.start();
t.join(); /* experimente comentar esta linha e executar de novo */
System.out.println("fim");
}
}