Из javadoc:
public final void join () генерирует InterruptedException
Ожидает смерти этого потока.
join()
ждетдля смерти потока независимо от причины.
Не имеет значения, умирает ли поток, потому что он завершил работу или из-за исключения (что, как я полагаю, вы подразумеваете под "прервано").Это даже сработало бы, если бы поток никогда не запускался.