public void run(){
		try {
			_serverSocket = new ServerSocket(_listenPort);
			System.out.println("Listening...");
		} catch (IOException e) {
			System.out.println("Cannot listen on port " + _listenPort);
		}
		UserDatabase.getUsers();
		Statistics statistics= Statistics.getStatisticsObject();
		while (!_serverStop.getValue()){
			try {
				ConnectionHandler<T> newConnection = new ConnectionHandler<T>(_tokenizerFactory.create(), _serverSocket.accept(), _protocolFactory.create(), _serverStop, this);
				_allConnections.add(newConnection);
				new Thread(newConnection).start();
			} catch (IOException e){
				if (!_serverStop.getValue())
					System.out.println("Failed to accept on port " + _listenPort);
				else
					System.out.println("Server recieved shutdown command");
			}
		}
		statistics.shutDown();
	}