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.