t1.run();
Измените его на t1.start()
.
В результате получается, что поток, который вы намереваетесь создать, на самом деле не работает как отдельный поток.Вместо этого цикл
while(!finished){ System.out.println("I'm alive"); }
выполняется в основном потоке, и ваш код num.crash(t1);
фактически никогда не вызывается.Это вызывает бесконечный цикл.