Coordenar a execução de tarefas (aguardar a conclusão de uma para depois executar a outra)

Boa tarde,

Estou tendo dificuldades com um código (resumido abaixo), pois o mesmo está executando as condicionais if/else antes de terminar de executar a função [color=red]triggerCaptcha(status, rcd, true)[/color];

[code]
protected static Map<instanciaUsuario, BotEye> _activeEyes;

public boolean reportStatus (…)
{

triggerCaptcha(status, rcd, true); //essa função é executada porém antes de terminar completamente o código já executa o if seguinte.

if (condicao for verdadeira) //esse if eu quero que execute apenas quando de fato toda e qualquer operação anterior já tiver sido concluída.
{
	logout();
}
else
{
	...
}
return true

}[/code]

aqui alguns detalhes da função triggercaptcha, que exibe um html com algumas informações e um captcha para ser preenchido [color=red]em até 30seg[/color] (valor da variável [color=green]seconds[/color]).

private static void triggerCaptcha(usuario, rcd, Effect) { HtmlMessage.setHtml("msg do html contendo o captcha"); usuario.sendPacket( HtmlMessage ); if (Effect) { usuario.setIsImmobilized(true); usuario.setIsInvul(true); _activeEyes.put(usuario, new BotEye(usuario, rcd, seconds)); } }

detalhes do boteye.

[code]private final static class BotEye implements Runnable
{

    private ScheduledFuture<?> _task;
    private int _delay;
    public ReportedCharData _rcd;
    private instanciaUsuario _usuario;

    public BotEye(usuario, rcd, delay) {
        _usuario = usuario;
        _delay = delay;
        _rcd = rcd;
        run();
    }

    @Override
    public void run() {
        if (_delay < 1) {
        	blablabla...
            return;
        }
        handleTick();
        _task = ThreadPoolManager.getInstance().scheduleGeneral(this, 1000);
        _delay--;
    }

    public void cancel() {
        if (_task != null) {
            _task.cancel(true);
        }
    }
private void handleTick() {
        switch (_delay) {
            case 30:
            	_usuario.sendMessage("falta 30seg");
            	break;
            case 10:
            	_usuario.sendMessage("falta 10seg");
            	break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            	_usuario.sendMessage("falta 1seg");
                break;
        }
    }

}[/code]

Como faço para que de fato as condições if/else sejam apenas executadas após o usuário terminar de responder o captcha??

//talvez seja melhor essa classe nao ser final
private final static class BotEye implements Runnable {
public void run() {//coloque aqui o que seja que seja executado primeiro
segmento1();
}
public void segmento1() {//aqui o que deseja que seja executado segundo
segmento2();
}
public void segmento2() {//aqui terceiro
segmento3();
}
//assim por diante, quantos desejar
}

class Teste {
public static void main (String args[]) {
Runnable tarefa = new BotEye();
Thread minhaTarefa = new Thread(tarefa);

	minhaTarefa.start();
	//Aqui executará o metodo de Runnable, o run()...e por consequente os outros subsequentes
}

}