Как выполнить несколько запросов параллельно, а не последовательно?
Я запрашиваю все свои 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, и соединение устанавливается только один раз, поэтому мне не нужно создавать несколько соединений.