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.