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.

questionAnswers(2)

yourAnswerToTheQuestion