Мое первое желание - не делать то, что вы предлагаете. Техника, которую я использовал ранее, заключается в том, чтобы дать потоку селектор для метода в исходном объекте (который находится в основном потоке). Когда запускается второй поток, основной поток продолжает выполняться, но отображает какой-то индикатор занятости на дисплее. Это позволяет продолжить взаимодействие с пользователем, если требуется.
Когда второй поток заканчивается, незадолго до его закрытия он вызывает селектор в основном потоке. Затем метод, на который ссылается селектор, удаляет индикатор занятости с дисплея и сообщает основному потоку обновить информацию, собирая все данные, сгенерированные вторым потоком.
Я успешно использовал это для приложения, которое обращается к веб-службе (во втором потоке), а затем обновляет отображение, как только данные возвращаются без его блокировки. Это делает пользовательский опыт намного приятнее.