Sistemas Concorrentes
Capítulo 02 – Threads
Prof. Paulo Fernando da Silva
Roteiro
• Condição de Concorrência
• Sincronização
• Locks
• Semáforos
Prof. Paulo Fernando da Silva
Exemplo da Conta Bancária
Prof. Paulo Fernando da Silva
Thread de Saque
Prof. Paulo Fernando da Silva
Thread de Depósito
Prof. Paulo Fernando da Silva
Condição de Concorrência
Prof. Paulo Fernando da Silva
Controle de Concorrência
Prof. Paulo Fernando da Silva
Monitores
Prof. Paulo Fernando da Silva
Exemplo Conta Bancária
• Implemente a solução de monitores no
exemplo da conta bancária
Prof. Paulo Fernando da Silva
Condições de Acesso
Prof. Paulo Fernando da Silva
Atividade 2.1
Implemente a classe lista cujos métodos put e get são sincronizados.
Crie uma thread para produtor e outra para consumidor.
O produtor começa a produzir se houver menos de 10 elementos na fila.
Quando a fila tiver 20 elementos o produtor pára.
O consumidor pára somente quando a fila estiver vazia.
A fila recebe Strings() com data "new Date().toString()".
Produtor e consumidor devem executar 1000 interações.
Prof. Paulo Fernando da Silva
Locks
Prof. Paulo Fernando da Silva
Locks
Prof. Paulo Fernando da Silva
Conta Bancária com Locks
Prof. Paulo Fernando da Silva
Lock RW
Prof. Paulo Fernando da Silva
Conta Banco c\ Lock RW
Prof. Paulo Fernando da Silva
Condições de Acesso c\ Lock
Prof. Paulo Fernando da Silva
Condições de Acesso c\ Lock
Prof. Paulo Fernando da Silva
Atividade 2.2
Implemente uma lista, com 2 locks condicionais: canRead e canWrite.
O produtor para de produzir quando o buffer estiver cheio.
O consumidor para de consumir quando o buffer estiver vazio.
O produtor e o consumidor devem dormir por tempos randômicos.
O consumidor e o produtor interagem 10 vezes com a lista.
Prof. Paulo Fernando da Silva
Semáforos
Prof. Paulo Fernando da Silva
Exemplo Estacionamento
Prof. Paulo Fernando da Silva
Atividade 2.3
5 filósofos, que repartem a sua vida entre 2 estados:
– Pensar
– Comer
Para comer, sentam-se a uma mesa com 5 garfos,
– Pegam no garfo esquerdo, se possível
– Pegam no garfo direito, se possível
– Comem o esparguete
– Pousam os garfos e vão pensar mais um bocado
Prof. Paulo Fernando da Silva
Projeto de Thread
• Desenvolva seu projeto aplicando os
conceitos de threads
• Requisitos:
– Sync, wait, notify
– Lock, await, signal
– Semáforo
– Conhecimento
– Complexidade
– Plus
Prof. Paulo Fernando da Silva
Download

Prof. Paulo Fernando da Silva