Как выполнить несколько запросов параллельно, а не последовательно?

Я запрашиваю все свои 10 таблиц, чтобы получить от них идентификатор пользователя, и загружаю все идентификаторы пользователя в HashSet, чтобы у меня был уникальный идентификатор пользователя.

На данный момент это последовательно. Мы идем к одной таблице и извлекаем из нее все user_id и загружаем ее в хэш-набор, а затем во вторую и третью таблицы и продолжаем.

    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;
    }

Есть ли способ сделать это многопоточным, чтобы для каждой таблицы они получали данные из моей таблицы параллельно? В конце мне нужноuserList hashset, который должен иметь весь уникальный идентификатор пользователя из всех 10 таблиц.

Я работаю с базой данных Cassandra, и соединение устанавливается только один раз, поэтому мне не нужно создавать несколько соединений.

Ответы на вопрос(0)

Ваш ответ на вопрос