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