Threads em Java:
Apresentação introdutória sobre threads em Java! Exploraremos os
benefícios de concorrência e paralelismo. Abordaremos a sincronização e a
comunicação entre threads.
por Ricardo Stegh Camati
Sincronização com synchronized
A palavra-chave synchronized garante exclusão mútua. Métodos e blocos de código podem ser sincronizados. Apenas uma thread
pode acessar o recurso por vez.
Exclusão Mútua Métodos e Blocos
O synchronized garante que apenas uma thread acesse um Pode ser aplicado a métodos inteiros ou a blocos específicos de
recurso compartilhado por vez, evitando condições de corrida. código dentro de um método para controlar o acesso.
O que é o método wait?
O método wait() libera o lock e suspende a thread. A thread aguarda até ser notificada por notify() ou notifyAll().
1 Liberação do Lock 2 Suspensão da Thread 3 Notificação
wait() libera o lock do objeto, A thread entra em estado de A thread é acordada por
permitindo que outras threads espera até que outra thread a notify() ou notifyAll().
o acessem. notifique.
Notify e NotifyAll
notify() acorda uma thread que está em wait(). notifyAll() acorda todas as
threads em espera. A thread acordada compete pelo lock.
notify() notifyAll()
Acorda uma única thread em Acorda todas as threads em
espera. espera.
Competição
Threads competem pelo lock após serem acordadas.
Fluxo de Wait/Notify
Um diagrama de sequência ilustra a interação entre threads usando wait(), notify() e notifyAll(). Threads aguardando, sendo
notificadas e retomando a execução.
1 Thread A aguarda
2 Thread B notifica
3 Thread A acorda