next up previous
Next: Seu arsenal Up: ep4 Previous: Modelos de programação de

Requisitos adicionais

O ServContas deve ser capaz de operar tanto no modo thread-per-session ou com um thread pool. O default é thread-per-session. Para que o ServContas opere com um thread pool é necessário ativá-lo com um argumento adicional na linha de comando. O número máximo de worker threads no pool e o comprimento máximo da fila de sessões aguardando atendimento por alguma worker thread são argumentos especificados na ativação do ServContas. Novas conexões de clientes devem ser recusadas caso a fila de sessões tenha comprimento máximo. A fila de sessões deve ser um bounded buffer com múltiplos consumidores (as worker threads) e um produtor (a listener thread, que fica aguardando novas conexões de clientes).

Em vez de implementar do zero o pool de worker threads e a fila de sessões, neste EP você usará as implementações existentes no pacote java.util.concurrent. Use um ThreadPoolExecutor para o pool de threads e uma ArrayBlockingQueue para a fila de sessões.

Além das opções descritas na seção 2, seu programa deverá aceitar as seguintes:

Implemente também um cliente adicional (ou conjunto de clientes) que compare o desempenho do ServContas no modo thread-per-session com o desempenho no modo thread pool. Escreva esse(s) cliente(s) com o objetivo de evidenciar a diferença de desempenho entre os modos thread-per-session e thread pool, na situação em que essa diferença deve ser maior: sessões bem curtas, com uma só requisição por sessão. Ou seja, faça o cliente executar um laço que abre uma sessão com o servidor, envia uma requisição, aguarda a resposta e fecha a sessão. No modo thread-per-session o ServContas criará uma nova thread a cada volta, mas no modo thread pool ele só alocará uma worker thread do pool.

Use como medidas de desempenho o tempo de resposta para um cliente e a vazão (throughput) com múltiplos clientes.


next up previous
Next: Seu arsenal Up: ep4 Previous: Modelos de programação de
Francisco Reverbel
2006-06-11