Pessoal, boa noite.
Estou com dúvida sobre o método join().
Fiz uma classe para testes e não deu certo.
Gostaria de saber o motivo de não ter executado a ThreadA até o final, ou se fiz alguma coisa errada ou se não entendi realmente.
Classe:
public class Threads {
public Threads(){
initThreads();
}
public void initThreads(){
ThreadA a = new ThreadA();
ThreadB b = new ThreadB();
Thread ta = new Thread(a);
Thread tb = new Thread(b);
ta.start();
tb.start();
join(ta);
}
public void join(Thread t){
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
new Threads();
}
private class ThreadA implements Runnable{
@Override
public void run() {
for (int i = 0; i < 1000; i++)
System.out.println("Thread A");
}
}
private class ThreadB implements Runnable{
@Override
public void run() {
for (int i = 0; i < 1000; i++)
System.out.println("Thread B");
}
}
}
Resultado (abreviado):
Thread B
...
Thread B
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread B
Thread A
...
Thread A
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
...
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
...
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A
Thread B
Thread B
...
Thread B
Thread B
Thread A
Thread A
...
Thread A
Thread A