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 ?
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
publicclassAimplementsRunnable{publicvoidrun(){for(inti=1;i<5;i++){System.out.println("i="+i);try{Thread.sleep(1000);}catch(InterruptedExceptionie){ie.printStackTrace();}}}publicThreadstart(){Threadt=newThread(this);t.start();returnt;}publicstaticvoidmain(Stringarg[])throwsInterruptedException{Aa=newA();Threadt=a.start();t.join();/* experimente comentar esta linha e executar de novo */System.out.println("fim");}}