23
Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Embed Size (px)

Citation preview

Page 1: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Sistemas Concorrentes

Capítulo 02 – Threads

Page 2: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Roteiro

• Condição de Concorrência

• Sincronização

• Locks

• Semáforos

Page 3: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Exemplo da Conta Bancária

Page 4: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Thread de Saque

Page 5: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Thread de Depósito

Page 6: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Condição de Concorrência

Page 7: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Controle de Concorrência

Page 8: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Monitores

Page 9: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Exemplo Conta Bancária

• Implemente a solução de monitores no exemplo da conta bancária

Page 10: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Condições de Acesso

Page 11: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

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.

Page 12: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Locks

Page 13: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Locks

Page 14: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Conta Bancária com Locks

Page 15: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Lock RW

Page 16: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Conta Banco c\ Lock RW

Page 17: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Condições de Acesso c\ Lock

Page 18: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Condições de Acesso c\ Lock

Page 19: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

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.

Page 20: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Semáforos

Page 21: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

Prof. Paulo Fernando da Silva

Exemplo Estacionamento

Page 22: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

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

Page 23: Prof. Paulo Fernando da Silva Sistemas Concorrentes Capítulo 02 – Threads

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