SwingWorker em fila

1 resposta
javer

Alguém sabe me dizer como eu executo algumas tarefas com swingworker em fila?

Tenho algo assim:

SwingWorker<ArrayList<Veiculo>, Void> task1 = new SwingWorker<ArrayList<Veiculo>, Void>() {

    @Override
    protected ArrayList<Veiculo> doInBackground() {
        ArrayList<Veiculo> lista = VeiculoDAO.getListaVeiculos(c, 2);// apenas Carretas
        return lista;
    }

    @Override
    public void done() {
        ArrayList<Veiculo> lista = null;
        try {
            lista = get();

        } catch (InterruptedException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, "Mensagem..:" + ex.getMessage(), ex);
        } catch (ExecutionException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
};

SwingWorker<ArrayList<Veiculo>, Void> task2 = new SwingWorker<ArrayList<Veiculo>, Void>() {

    @Override
    protected ArrayList<Veiculo> doInBackground() {
        ArrayList<Veiculo> lista = VeiculoDAO.getListaVeiculos(c, 2);// apenas Carretas
        return lista;
    }

    @Override
    public void done() {
        ArrayList<Veiculo> lista = null;
        try {
            lista = get();

        } catch (InterruptedException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, "Mensagem..:" + ex.getMessage(), ex);
        } catch (ExecutionException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
};

SwingWorker<ArrayList<Veiculo>, Void> task3 = new SwingWorker<ArrayList<Veiculo>, Void>() {

    @Override
    protected ArrayList<Veiculo> doInBackground() {
        ArrayList<Veiculo> lista = VeiculoDAO.getListaVeiculos(c, 2);// apenas Carretas
        return lista;
    }

    @Override
    public void done() {
        ArrayList<Veiculo> lista = null;
        try {
            lista = get();

        } catch (InterruptedException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, "Mensagem..:" + ex.getMessage(), ex);
        } catch (ExecutionException ex) {
            Logger.getLogger(Coletas2UI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
};

// Quero fazer algo assim
task2.execute();
task1.execute();
task3.execute();

Mas quero que o task1 comece a executar somente quando task2 tenha terminado completamente.

1 Resposta

A

De uma pesquisada sobre ThreadGroup

Com ele vc consegue saber a quantidade de threads rodando no grupo em que vc esta…

:roll:

Caso resolva poste como… tenho curiosidade bastante curiosidade sobre threads!!!

Criado 11 de março de 2008
Ultima resposta 11 de mar. de 2008
Respostas 1
Participantes 2