Sobes.tech
Junior — Middle

Consegues nomear os primitivos e ferramentas principais fornecidos no pacote java.util.concurrent para organizar a execução multithread?

sobes.tech IA

Resposta da IA

No pacote java.util.concurrent existem várias primitivas e ferramentas essenciais para organizar a execução multithread:

  • Executor e ExecutorService — interfaces para gerir o pool de threads e a execução assíncrona de tarefas.
  • Future e CompletableFuture — para obter o resultado de cálculos assíncronos.
  • CountDownLatch — permite que um ou vários threads esperem que outros threads realizem certas ações.
  • CyclicBarrier — sincroniza vários threads, obrigando-os a esperar uns pelos outros.
  • Semaphore — limita o número de threads que podem aceder a um recurso ao mesmo tempo.
  • ReentrantLock — mecanismo de bloqueio avançado com a capacidade de tentar bloquear e com timeout.
  • Coleções concorrentes (por exemplo, ConcurrentHashMap, CopyOnWriteArrayList) — coleções seguras para múltiplos threads.
  • Variáveis atômicas (AtomicInteger, AtomicLong, etc.) — para operações atômicas em variáveis sem usar bloqueios.

Exemplo de uso de ExecutorService:

ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
    System.out.println("Tarefa executada num thread separado");
});
executor.shutdown();