public void run () {
        while (running) {
            long now = System.currentTimeMillis();
            clientLock.lock();
            try {
                for (ServerThread t : clients) {
                    if(now - t.lastAction > SOFT_TIMEOUT && !t.softTimeout) {
                        System.out.println("Client " +t.socket.getInetAddress()+
                            " hit soft-timeout limit");
                        t.softTimeout = true;
                    }
                    if(now - t.lastAction > HARD_TIMEOUT) {
                        System.out.println("Client " +t.socket.getInetAddress()+
                           " hit hard-timeout limit, disconecting...");
                        t.close();
                        clients.remove(t);
                    }
                }
            } catch (Exception e) { e.printStackTrace(); 
            } finally { clientLock.unlock(); }
            try { this.sleep(CHECK_TIMER); }
            catch (InterruptedException e) { e.printStackTrace(); }
        }
    }