Modelo JTable

Implementei uma classe que extende AbstractTableModel, e para monitorar automaticamente alterações nos dados eu criei o método abaixo, usando thread:

private void monitor() {
    monitor = new Thread() {
        @Override
        public void run() { 
            int oldHashCode = 0;
            int oldSize = 0;
                
            do {
                if (dataSource != null && (dataSource.hashCode() != oldHashCode || dataSource.size() != oldSize)) {
                    fireTableDataChanged();
                    oldHashCode = dataSource.hashCode();
                    oldSize = dataSource.size();
                }
                
                try {
                    // Sleep para que esta thread não sobrecarregue o processador
                    sleep(200);
                } catch (InterruptedException ex) {
                    new ExceptionFrame(ex).setVisible(true);
                }
            } while (true);
        }
    };
    monitor.start();
}

Está funcionando perfeitamente, só que quando eu monto algumas tabelas o processamento começa a ser maior, pois uma thread pra cada tabela é criada. Até agora não tive problemas, mas acredito que eu consiga fazer a mesma coisa usando um listener, já procurei por algo do tipo mas sem sucesso. Se alguém puder ajudar, agradeço muito.

Abraço a todos.