Sobes.tech
Junior — Middle

Quais componentes do pacote concurrency você utilizou nos seus projetos?

sobes.tech IA

Resposta da IA

Nos projetos Java, utilizei os seguintes componentes do pacote java.util.concurrent:

  • ExecutorService — para gerir o pool de threads e executar tarefas de forma assíncrona.
  • Future e Callable — para obter o resultado da execução de uma tarefa numa thread separada.
  • CountDownLatch e CyclicBarrier — para sincronizar threads, por exemplo, esperar que várias tarefas terminem.
  • ConcurrentHashMap — implementação thread-safe de um mapa para acesso paralelo.
  • Semaphore — para limitar o número de operações que podem ser executadas simultaneamente.

Exemplo de uso do ExecutorService com Callable:

ExecutorService executor = Executors.newFixedThreadPool(2);
Callable<Integer> task = () -> {
    // alguma tarefa computacional
    return 123;
};
Future<Integer> future = executor.submit(task);
try {
    Integer result = future.get();
    System.out.println("Resultado: " + result);
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}
executor.shutdown();