@Override public void run() { while (true) { if (Server.isRunning() == false) { Server.setLock(true); try { serverSocket.close(); if (Server.getClients() > 0) { try { for (MiniServer subClient : util.clients()) { synchronized (subClient) { System.out.println(util.getDate() + subClient.getCId() + " disconnected."); subClient.sendMessage("Server Closed"); subClient.close(); } } util.clients().clear(); } catch (ConcurrentModificationException e) { e.printStackTrace(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Server.setLock(false); break; } try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }