Como executar várias consultas em paralelo, em vez de sequencialmente?
Estou consultando todas as minhas 10 tabelas para obter o ID do usuário e carregando todos os IDs do usuário no HashSet para que eu possa ter um ID de usuário exclusivo.
A partir de agora é sequencialmente. Nós vamos para uma tabela e extraímos todo o user_id dela e o carregamos no conjunto de hash, depois na segunda e terceira tabela e continuamos.
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;
}
Existe alguma maneira de fazer isso multithread para que para cada tabela eles obtenham os dados da minha tabela em paralelo? No final, eu precisouserList
hashset que deve ter todo o ID de usuário exclusivo de todas as 10 tabelas.
Estou trabalhando com o banco de dados Cassandra e a conexão é feita apenas uma vez, portanto não preciso criar várias conexões.