Java Concurrency in Practice
432 páginas
Portuguese
PDF
4.5

Java Concurrency in Practice

Java Concurrency in Practice

Autor:

Ano:

Resumo:

Introdução

O livro «Java Concurrency in Practice» (autores: Brian Goetz, Tim Peierls, Joshua Bloch e outros) é, sem exagero, a bíblia da programação multithread em Java. Publicado em 2006, ele ainda permanece como a fonte mais autoritária e profunda de conhecimento sobre concorrência no ecossistema Java. Apesar de quase duas décadas terem se passado desde sua publicação, os princípios fundamentais descritos no livro não envelheceram: o modelo de memória Java (JMM), problemas de visibilidade, atomicidade, ordenação, bem como os padrões de publicação segura de objetos, continuam relevantes até hoje.

O livro não é uma introdução ao Java do zero — ele pressupõe domínio sólido da linguagem e compreensão básica de threads. No entanto, é ele que transforma o desenvolvedor de um "usuário de threads" em um verdadeiro especialista, capaz de projetar aplicações confiáveis, escaláveis e thread-safe.

Sobre o que é este livro

«Java Concurrency in Practice» aborda todos os aspectos-chave da programação concorrente em Java — desde mecanismos de sincronização de baixo nível até abstrações de alto nível do pacote java.util.concurrent. O livro é estruturado de forma lógica: primeiro, explica os problemas básicos do multithreading (condições de corrida, deadlocks, problemas de visibilidade); em seguida, aborda as ferramentas para resolvê-los — synchronized, volatile, final, variáveis atômicas, locks ReentrantLock, semáforos, barreiras. Capítulos separados são dedicados a testes de código multithread, desempenho e escalabilidade, bem como tópicos avançados como Fork-Join e CompletionService.

Atenção especial é dada ao modelo de memória Java (JMM) — é a compreensão do JMM que permite ao desenvolvedor evitar erros difíceis de detectar relacionados ao reordenamento de instruções e cache de dados. O livro contém muitos exemplos de código "correto" e "incorreto", tornando o material claro e prático.

Para quem é este livro

O livro é direcionado a desenvolvedores Java experientes que já lidaram com multithreading e desejam sistematizar seus conhecimentos. Será útil para:

  • Desenvolvedores de aplicações server-side (serviços web, processamento de requisições, filas de tarefas);
  • Especialistas em sistemas de alta carga e aplicações de baixa latência;
  • Arquitetos que projetam sistemas escaláveis;
  • Aqueles que se preparam para entrevistas técnicas (especialmente em empresas FAANG);
  • Professores e autores de cursos sobre Java.

Para iniciantes, o livro pode parecer difícil — recomenda-se primeiro aprender os fundamentos do multithreading por outras fontes (por exemplo, "Thinking in Java" de Bruce Eckel ou os tutoriais oficiais da Oracle).

O que o leitor aprenderá

  • Principais problemas do multithreading: condições de corrida, deadlocks, starvation, inversão de prioridades.
  • Thread-safety: como projetar classes que funcionam corretamente quando acessadas por múltiplas threads.
  • Modelo de memória Java (JMM): regras happens-before, garantias de visibilidade, atomicidade e ordenação.
  • Publicação segura de objetos: como tornar um objeto visível para outras threads sem violar a integridade.
  • Ferramentas de sincronização: synchronized, volatile, ReentrantLock, ReadWriteLock, StampedLock.
  • Classes atômicas: AtomicInteger, AtomicReference, AtomicLong, AtomicReferenceFieldUpdater.
  • Pool de threads e Executor: ThreadPoolExecutor, ScheduledThreadPoolExecutor, ForkJoinPool.
  • Coleções para multithreading: ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue, ConcurrentLinkedQueue.
  • Testes de código multithread: como escrever testes que detectam corridas e locks (incluindo o uso de Thread.yield() e primitivas de sincronização)

Recommendations