ATPS01
384 palavras
2 páginas
Descrição do ATPS 01 de Programação ConcorrenteProf. Hilton
Para evitar a queda da qualidade do serviço, alguns servidores limitam a quantidade de clientes que podem atender. Muitos deles (como servidores Web), disparam um thread para atender cada cliente.
O programa a seguir, de modo muito simples, imitará esse comportamento, permitindo que apenas 3 threads possam ser executados por vez. As execuções serão divididas em blocos. Em cada bloco, apenas três threads poderão ser executados por vez.
A execução de um thread apenas fará imprimir uma mensagem na saída padrão, usando
System.out.println().
Com base no programa MultiSync3.java discutido em sala, escrever um programa Java que disparará 10 threads secundários, divididos em grupos de 3, nos seguintes conjuntos:
• Bloco 0: threads {0, 1, 2};
• Bloco 1: threads {3, 4, 5};
• Bloco 2: threads {6, 7, 8};
• Bloco 3: threads {9}.
A notação {0, 1, 2} significa, como de hábito, que não há nenhuma ordem no conjunto da Rodada 0.
Isto é: a ordem de execução desses threads pode ser
• primeiro 2, depois 0, depois 1;
• primeiro 0, depois 2, depois 1;
• ou qualquer outra ordem na qual sejam mostrados apenas os threads no conjunto {0, 1, 2}.
Naturalmente, o mesmo vale para todos outros blocos. Isto é: qualquer ordem de execução dos threads é válida, desde que apenas os threads que pertençam ao conjunto de cada bloco sejam executados nele.
Saída esperada:
Resumindo, uma saída válida do programa poderá ser
Bloco
Hello
Hello
Hello
0 from thread 2 from thread 1 from thread 0
Bloco
Hello
Hello
Hello
1 from thread 3 from thread 5 from thread 4
Bloco
Hello
Hello
Hello
2 from thread 8 from thread 7 from thread 6
Bloco 4
Hello from thread 9
Dicas:
1. A quantidade de threads permitidas por rodada deve ser definida no construtor da classe
Semaphore.
Não esquecer de informar o valor true para o construtor, o que aumenta a garantia de ordem na fila de procura pelo semáforo;
2. Para identificar os threads que podem ser executados em