Problemas com threads

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!