O método join assumiu que apenas uma thread pode dar join, semântica que pareceu fazer mais sentido, uma vez que a principal utilização de joins é para threads que criam outras e querem esperar o término da criada, e caso queira-se sincronizar várias Threads existem outros mecanismos mais interessantes e explícitos como Barreiras. Esse método assume que o programador não mais chamará a Thread a qual foi dada join, sendo indefinido o que acontece caso o faça.