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