Lista sincronizada

2 respostas
S

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

2 Respostas

S

Alguem consegue me auxiliar?

Rodrigo_Sasaki

Fica complicado se você oculta a implementação do método que diz estar com problema, e se não mostra no código quem é essa tsList que novaT manipula.

Criado 29 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 2
Participantes 2