Galera,
Estou com problemas nas minhas threads, acho que estou levando uma surra desse bicho.
Estou usando o codigo abaixo para gerenciar as minhas threads.
ExecutorService executor = Executors.newCachedThreadPool();
Eu crio esse cara no main e saio passando ele para as classes que vou usar como thread.
So que as minhas threads não estao morrendo, executa o run e nao morre com isso esta dando falha na memoria.
Abaixo o pedaço do meu log
16/08/2011 01:31:30,007 33105577 [pool-1-thread-11695] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando agendado para o equipamento de imei: 030177661
16/08/2011 01:31:30,008 33105578 [pool-1-thread-11704] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando agendado para o equipamento de imei: 030367718
16/08/2011 01:31:30,010 33105580 [pool-1-thread-11717] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando agendado para o equipamento de imei: 000746834
16/08/2011 01:31:30,014 33105584 [pool-1-thread-11707] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando agendado para o equipamento de imei: 030367718
16/08/2011 01:31:30,018 33105588 [pool-1-thread-11699] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando agendado para o equipamento de imei: 030367718
16/08/2011 01:31:30,040 33105610 [pool-1-thread-11711] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando para o equipamento de imei: 030177661
16/08/2011 01:31:30,041 33105611 [pool-1-thread-11709] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando para o equipamento de imei: 030177661
16/08/2011 01:31:30,041 33105611 [pool-1-thread-11702] INFO root - ControlaConexao-verificarSeHaComandosParaOEquipamento: Não foi encontrado nenhum comando para o equipamento de imei: 030367718
Abaixo as c]outras classes queestou usando e que deve estar com problemas
public class ServidorDoGerenteDeEquipamento implements Runnable{
private Equipamento equipamento;
private long tempoDoSleep;
private ExecutorService executor;
public ServidorDoGerenteDeEquipamento(long tempo, Equipamento equip, ExecutorService execu) {
equipamento = equip;
tempoDoSleep = tempo;
executor = execu;
}
private void gerenciarConexoesDosEquipamentos() throws SViasException, InterruptedException, IOException {
SViasLogger.logInfo(">> Aguardando Trabalho!");
List<SocketSVias> listaSocketSVias = Collections.synchronizedList(new ArrayList<SocketSVias>( equipamento.pegarListaDeSocketSVias()));
SViasLogger.logInfo(">> Pegando Lista de Conexoes. Tamanho da Lista: " + listaSocketSVias.size());
synchronized (listaSocketSVias) {
for (SocketSVias socketSVias : listaSocketSVias) {
GerenciaSocket gerenciaSocket = new GerenciaSocket(socketSVias);
executor.execute(gerenciaSocket);
}
}
}
public void run() {
while (true) {
try {
gerenciarConexoesDosEquipamentos();
try {
Thread.sleep(tempoDoSleep);
} catch (InterruptedException e) {
SViasLogger.logError("ServidorDoGerenteDeEquipamento-run", e);
}
} catch (Exception e) {
SViasLogger.logError("ServidorDoGerenteDeEquipamento-run", e);
} catch (Throwable t) {
SViasLogger.logError("ServidorDoGerenteDeEquipamento-run", t);
}
}
}
}
public class GerenciaSocket implements Runnable {
private SocketSVias socketSVias;
public GerenciaSocket(SocketSVias s) {
socketSVias = s;
}
public void gerenciarEquipamentosConectados() throws InterruptedException, SViasException, IOException {
ControlaConexao controlaConexao = new ControlaConexao();
if (!"@".equalsIgnoreCase(socketSVias.getUltimoComandoEnviado())) {
controlaConexao.identificarEquipamento(socketSVias);
}
controlaConexao.verificarSeHaComandosParaOEquipamento(socketSVias);
}
public void run() {
try {
//ESTOU ACHANDO QUE ESSE CARA NAO ESTA MORRENDO!!!
gerenciarEquipamentosConectados();
} catch (Exception e) {
SViasLogger.logError("GerenciaSocket-run", e);
}
}
}
Valeu pela força mais uma vez galera!