När du anropar Join så blockeras tråden du anropar med tills tråden du väntade på (joinade) kört klart.
Nu var det kanske det du menade, men inte det du skrev.
Generelt så används join för att stoppa körningen i programmet medan man väntar på att en process skall bli klar. På det viset kan man skicka iväg en tråd som kanske hämtar data man snart behöver, räkna lite på det man har, vänta på att den datan man bad om för ett tag sedan dyker upp och sedan köra vidare.
tråd getC.start() //C tar lång tid att hämta, körs asynkront
a = getA() //getA() och getB() körs synkront
b = getB()
getC.join() //Här stannar huvudtråden och väntar. Alla andra trådar på datorn (inklusive getC) forsätter
return a + b +c