private void handleLobbyPush() {
            while (!Thread.interrupted()) {
                try {
                    // Wait for a notification that the lobby has been 
                    // updated
                    synchronized (lobbyChangeNotifier) {
                        lobbyChangeNotifier.wait();
                    }
                    
                    // Send the lobby data to the user
                    synchronized (lobbyGames) {
                        synchronized (objOutputStream) {
                            objOutputStream.reset();
                            objOutputStream.writeObject(new String("Lobby"));
                            objOutputStream.writeObject(lobbyGames);
                            objOutputStream.flush();
                            
                            
                            // Check if lobby game has been moved to in progress
                            // games
                            if (lobbyGameName != null &&
                                inProgressGames.containsKey(lobbyGameName)) {
                                
                                // Send message to the client indicating that
                                // the game is starting
                                objOutputStream.writeObject("Game starting");
                                objOutputStream.flush();
                            }
                        }
                    }
                    
                } catch (InterruptedException e) {
                    // End the thread since it has been interrupted
                    break;
                } catch (Exception e) {
                    // Just continue loop
                }
            }

            printServerMsg("Ending lobby push thread.");
            
        }