Olá, possuo o seguinte trecho de código:
public GerenteT(String id, procurador procurador) {
this.id = id;
this.procurador = procurador;
this.listaT = Collections.synchronizedList(new ArrayList<Tarefa>());
this.listaR = new LinkedBlockingDeque<Requisicao>();
this.sendlistaT = Collections.synchronizedMap(new LinkedHashMap<String, Tarefa>());
}
public void run() {
try {
while (this.running) {
this.Requisicao = this.listaR.take();
this.idT = this.Requisicao.getidT();
this.RequisicaoSize = this.Requisicao.getRequisicaoSize();
this.socketT = this.procurador.gettsocketT(this.idT);
this.templistaT = this.selecaoT();
for (int i = 0; i < this.templistaT.size(); i++) {
Tarefa jj = this.templistaT.remove(i);
this.sendlistaT.put(jj.getID(), jj);
this.procurador.novaTSend(jj, socketT);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void novaT(String idT, byte[] descT) {
// TODO Auto-generated method stub
try {
Tarefa t = new Tarefa(descT);
t.setID(idT);
this.tsList.add(t);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public List<Tarefa> selecaoT(int min, int max) {
// TODO Auto-generated method stub
try {
.....
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
O código acima não apresenta nenhum erro em execução, mas em certos momentos o metodo selecaoT não está sendo executado corretamente. Bom, eu possuo uma outra thread externa que chama o metodo novaT, minha dúvida é se essa tthread externa chamar constantemente esse metodo tudo o que esta dentro do metodo run sera executado sequencialmente da mesma forma que as informações foram inseridas nesta fila, ou seja, se o metodo novaT inserir 1, 2, 3 o metodo run tambem ira retirar 1, 2, 3 e executar o que esta dentro dele nessa sequência?
Alguem poderia me auxiliar?
OBRIGADO