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();