Senhores,
estou com um problema no código abaixo:
public class Executores extends Thread {
public final static int TREINAMENTO = 1;
public final static int TESTE = 2;
private boolean executando = true;
private static java.util.List<ExecutorParametro> acoes = new java.util.Vector<ExecutorParametro>();
public Executores() {
}
public static synchronized int getQuantidadeAcoesPendentes() {
return acoes.size();
}
public synchronized ExecutorParametro getAcao() {
if (acoes.size() > 0) {
return acoes.remove(0);
}
return null;
}
@Override
public void run() {
while (isExecutando()) {
ExecutorParametro exec = getAcao();
if( exec != null) {
if (exec.getTipo() == TREINAMENTO) {
exec.executaTreinamento();
} else {
exec.executaTeste();
}
} else {
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(Executores.class.getName()).log(Level.SEVERE, null, ex);
}
}
Thread.yield();
}
}
public static synchronized void addAcao(int tipoAcao, Rede rede, Classe classe,
double[] carac, SubGerenteTreinamento treina) {
ExecutorParametro pe = new ExecutorParametro(tipoAcao, rede, classe, carac, treina);
acoes.add(pe);
}
public synchronized boolean isExecutando() {
return executando;
}
public synchronized void setExecutando(boolean v) {
executando = v;
}
}
Gerando a exception:
Exception in thread "Thread-9" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0 at java.util.Vector.remove(Vector.java:777) at br.ufpr.sibila.Executores.getAcao(Executores.java:28)
Alguém tem alguma sugestão?
vw
