Что будет делать метод t2.join() , если поток t2 уще не стартовал, будет ли блокировка чегото и тд?
static Thread t1 = new T1();
static Thread t2 = new T2();
t1.start();
t2.join();
t2.start();
join()в цикле проверяетisAlive()и уведомляет ждущих еслиisAlive()вернётfalse. МетодisAlive()возвращаетfalseи в том случае, если поток ещё не был запущен...join()периодически проверяет жив ли поток, и если да то вызываетwait()на объекте потока. Потом просыпается, снова проверяет и т.д. Когда поток завершается он автоматически вызываетnotifyAll(), соответственно все ждущие просыпаются и проверяют жив ли поток.