вы можете использовать глобальный класс:
public abstract class Global{
private static int counter = 30;
private static ProgressDialog pd;
private static Activity a;
public static synchronized void updateCounter(){
counter--;
if(counter<=0){
a.runOnUiThread(new Runnable() {
@Override
public void run() {
pd.dismiss();
}
});
}
}
}
вам нужно использовать «синхронизированный» из-за одновременного доступа к потокам.
И в вашей основной деятельности запустите ProgressDialogи инициализируем переменные:
Global.a = this;
Global.pd = ProgressDialog.show(this, "Tittle","Message ...", true);
и затем запускаем потоки.
В конце каждого потока вы можете затем вызвать Global.updateCounter();