Buscar

SD_14_15_FP05

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade da Beira Interior 
 
 Sistemas Distribuídos 
 
 Folha 5 - 1 
Paula Prata, Departamento de Informática da UBI 
http://www.di.ubi.pt/~pprata/sd.htm 
 
 
 Multithreaded Servers 
 
1 – Implemente o Servidor da data e hora do sistema estudado na aula teórica 
(“multithreaded server”). 
 
2 – Modifique o programa anterior de modo a conseguir demonstrar experimentalmente que 
o servidor pode servir vários clientes em simultâneo. 
 
3 – Considere o exercício 3 da FP03, e suponha que queremos, exactamente com o mesmo 
tipo de cliente, transformar o servidor do exercício num servidor multithreaded que irá criar 
uma nova Thread para servir cada um dos clientes que se liga. Vários clientes poderão estar 
simultaneamente a comunicar com o mesmo servidor. O servidor não enviará um texto 
introduzido pelo teclado mas uma String armazenada num objeto do tipo java.util.Vector 
que contém um número à sua escolha de mensagens pré-definidas. Se a conversação for 
longa a mesma mensagem pode ser enviadas várias vezes. Cada Thread deverá ter um 
número de ordem que será enviado nas mensagens para o cliente. 
 
4 – Modifique o exercício 5 (versão: uma conexão por cliente) da FP03 para que o servidor 
seja multithread. 
 
5- Modifique agora o exercício anterior de tal forma que, quando o número de threads em 
simultâneo chegar às 5, as novas threads que sejam criadas para servir novos clientes 
deverão suspender-se, voltando ao estado executável quando houver menos de 5 threads em 
execução. Quando uma thread começa a servir um novo cliente, verifica se há mais de 5 
clientes ligados ao servidor e, nesse caso, antes de se auto-suspender, enviará como 
primeira mensagem para o cliente a String: “Estou um pouco ocupado, não quer conversar 
mais tarde?” 
 
 
 
Universidade da Beira Interior 
 
 Sistemas Distribuídos 
 
 Folha 5 - 2 
Paula Prata, Departamento de Informática da UBI 
http://www.di.ubi.pt/~pprata/sd.htm 
 
 
6 – Modifique o exercício anterior para que o servidor crie no início 5 Threads ((pool de 
Threads) que poderão aceitar ligações de clientes. Quando estiverem 5 clientes ligados ao 
servidor outros clientes que tentem ligar-se não o conseguirão fazer. 
 
7 – Implemente o problema dos leitores e escritores (“Readers-Writers Problem”) estudado 
na aula teórica (T05). 
 
 
 
 
Para explorar: 
 
- Implemente e teste o problema do produtor/consumidor estudado na aula teórica 
 
- Teste a classe Semáforo estudada na aula teórica usando-a para implementar o 
exercício 8 da FP04.

Continue navegando