Segue um codigo so pra testar…
[code]package com.certificação.thread;
public class ThreadTeste implements Runnable {
public static void main(String[] args) {
try {
new Thread(new ThreadTeste()).start();
System.out.println(Thread.currentThread().getName());
Thread.currentThread().join();
System.out.println("main");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
System.out.println("teste");
System.out.println("teste");
System.out.println("teste");
System.out.println("teste");
}
}
[/code]
Esse codigo esta anexando meu thread main no outro thread criado correto? Mas apos á execução do método run() nao é exibido o “teste main” pq?
Você está dando o join() na main thread, e não na thread disparada. Se quer corrigir, troque seu código para:
Thread t = new Thread(new Teste());
t.start();
System.out.println(Thread.currentThread().getName());
t.join();
System.out.println("main");
Pois entao ele anexa main ao final da thread disparada num é n? O método join() anexa a thread corrente ao final de uma outra Thread né n?
O join() faz com que a thread que chamou o join() espere a execução da thread que recebeu o join().
No caso do seu código, a main thread chamou o join() nela mesma… nesse caso, o join() não faz nada.
No código que montei, a main thread chamou o join() na thread disparada, fazendo com que ela esperasse a impressão da thread ali criada.
[quote=ViniGodoy]O join() faz com que a thread que chamou o join() espere a execução da thread que recebeu o join().
No caso do seu código, a main thread chamou o join() nela mesma… nesse caso, o join() não faz nada.
No código que montei, a main thread chamou o join() na thread disparada, fazendo com que ela esperasse a impressão da thread ali criada.[/quote]
Putss valeuuu de mais Vini!!!