Wie werden mehrere Abfragen parallel anstatt nacheinander ausgeführt?

Ich frage alle meine 10 Tabellen ab, um die Benutzer-ID von ihnen zu erhalten, und lade alle Benutzer-IDs in HashSet, damit ich eine eindeutige Benutzer-ID haben kann.

b sofort ist es sequentiell. Wir gehen zu einer Tabelle, extrahieren die gesamte user_id und laden sie in das Hash-Set und dann in die zweite und dritte Tabelle.

    private Set<String> getRandomUsers() {
        Set<String> userList = new HashSet<String>();

        // is there any way to make this parallel?
        for (int table = 0; table < 10; table++) {
            String sql = "select * from testkeyspace.test_table_" + table + ";";

            try {
                SimpleStatement query = new SimpleStatement(sql);
                query.setConsistencyLevel(ConsistencyLevel.QUORUM);
                ResultSet res = session.execute(query);

                Iterator<Row> rows = res.iterator();
                while (rows.hasNext()) {
                    Row r = rows.next();

                    String user_id = r.getString("user_id");
                    userList.add(user_id);
                }
            } catch (Exception e) {
                System.out.println("error= " + ExceptionUtils.getStackTrace(e));
            }
        }

        return userList;
    }

Gibt es eine Möglichkeit, dieses Multithreading so zu gestalten, dass für jede Tabelle die Daten aus meiner Tabelle parallel abgerufen werden? Am Ende brauche ichuserList hashset, das die gesamte eindeutige Benutzer-ID aus allen 10 Tabellen enthalten sollte.

Ich arbeite mit der Cassandra-Datenbank und die Verbindung wird nur einmal hergestellt, sodass ich nicht mehrere Verbindungen erstellen muss.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage