Universidade da Beira Interior
Sistemas Distribuídos
Folha 5 - 1
 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?”
Paula Prata, Departamento de Informática da UBI
http://www.di.ubi.pt/~pprata/sd.htm
Universidade da Beira Interior
Sistemas Distribuídos
Folha 5 - 2
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.
Paula Prata, Departamento de Informática da UBI
http://www.di.ubi.pt/~pprata/sd.htm
Download

FP05 - Departamento de Informática da Universidade da Beira Interior