public static final void loadAll(Object toNotify) {
        try {
            boolean cont = false;
            Connection con = DatabaseConnection.getConnection();
            try (PreparedStatement ps = con.prepareStatement("SELECT familyid FROM families"); ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    FamilyLoad.QueueFamilyForLoad(rs.getInt("familyid"));
                    cont = true;
                }
            }
            if (!cont) {
                return;
            }
        } catch (SQLException se) {
            System.err.println("unable to read family information from sql");
        }
        AtomicInteger FinishedThreads = new AtomicInteger(0);
        FamilyLoad.Execute(toNotify);
        synchronized (toNotify) {
            try {
                toNotify.wait();
            } catch (InterruptedException ex) {
            }
        }
        while (FinishedThreads.incrementAndGet() != FamilyLoad.NumSavingThreads) {
            synchronized (toNotify) {
                try {
                    toNotify.wait();
                } catch (InterruptedException ex) {
                }
            }
        }
    }