arefa @Async para mostrar um AlertDialog

Nos últimos dias, não consegui resolver um problema com minha caixa de diálogo. Estou executando um thread para mostrar a caixa de diálogo por 5000ms e removê-la. e estou tentando mostrar um brinde ("SUCESSO"). O problema é que também estou recebendo a caixa de diálogo pela segunda vez. Eu sou novo no desenvolvimento do Android e preciso resolver isso com a Tarefa assíncrona para poder atrasar o segundo segmento e mostrar um diálogo dialog.builder com um botão positivo em vez de brindar. Eu arregalei os olhos muito, mas confundi em implementar esse

Aqui estou enviando minhas credenciais para o servidor e, enquanto estou enviando, estou mostrando uma caixa de diálogo de progresso por 5000ms e quero ter um thread separado para mostrar o dialog.builder com um botão positivo. (Quando o usuário obtém uma resposta em o logcat para isso devo verificar o código de resposta == 1 ou não do logcat para mostrar o construtor)

alguém PLZ me ajudar a resolver isso com algum trecho de código, se possíve

Desde já, obrigado

este é o código em que preciso implementar a tarefa assíncrona

Button signin = (Button) findViewById(R.id.regsubmitbtn);
    signin.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // showDialog(0);
            t = new Thread() {
                public void run() {
                    register();
                    try {
                        while (counter < 2) {
                            showmsg(0);
                            Thread.sleep(5000);
                            removeDialog(0);
                            // Toast.makeText(Register.this, "Registerd", Toast.LENGTH_LONG).show();
                            showmsg(1);
                            // toast.show();

                            Thread.sleep(1000);

                        }

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            t.start();
        }
    });

}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case 0: {
        ++counter;
        dialog = new ProgressDialog(this);
        if (counter == 1) {
            dialog.setMessage("Registering...");
        }
        else {
            String resultsRequestSOAP = "";
            if (Log.v("TAG", String.valueOf(resultsRequestSOAP)) == 1)
                ;
            {
                Context context = getApplicationContext();
                CharSequence text = "Registerd";
                int duration = Toast.LENGTH_LONG;

                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }
        }
        dialog.setIndeterminate(true);
        dialog.setCancelable(true);
        return dialog;
    }
    }
    return null;
}

public void showmsg(int actionsToBePerformedOnScreen) {
    Message msg = new Message();
    msg.what = actionsToBePerformedOnScreen;
    handler.sendMessage(msg);

}

public Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case 0:

            showDialog(0);

            break;

        case 1:
            // clear all images in the list
            removeDialog(0);
            break;

        }

    };
};

questionAnswers(2)

yourAnswerToTheQuestion