Thread e Mecanismo de Pipes do Java
Descrição
Nesta atividade de laboratório você deve implementar o trabalho 1 usando mecanismo de Pipe do Java.
Na figura abaixo, as threads Cachorro acessam o PipedInputStream localizado em cada objeto Pote_i. Ou seja, cada Pote possui apenas um PipedInputStream que poderá ser usado, de forma concorrente, pelos cachorros competidores.
O cachorro Vermelho deve ter o PipedOutputStream de cada Pote para poder adicionar moeda(s) nos Potes.
Implementação
Não será necessário usar o Interrupt como trabalho 1, pois o método read do PipedInputStream é bloqueante. Isto é, se o Pote estiver vazio a thread competidor ao invocar o método read ficará bloqueada até que o cachorro vermelhor coloque uma moeda (um dado inteiro) no Pipe. Você deve apenas encontrar uma maneira de evitar que mais de uma thread invoque o método read de um determinado Pote.
O método getIntFromPipe() deve retornar um inteiro informando a quantidade de moedas obtidas do Pote (1 a 3 moedas).
Pense numa forma para que o cachorro Vermelho saiba quantas moedas tem num Pote, e assim, saber se deve colocar uma moeda num Pote vazio.
Veja o exemplo dos slides da aula sobre Pipe, a classe TakePipe mostra como deve ser implementada a classe Pote permitindo que threads distintas possam compartilhar um único PipedInputStream.
Apresentação
Como o trabalho anterior, esse trabalho vale 2,5 pontos.
A atividade pode ser desenvolvida individualmente ou em dupla. Em caso de cópia do código de outro aluno, ambos terão nota igual a zero.
O programa deverá ser enviado ao Moodle e apresentado ao professor no laboratório até o dia 01/10. Será verificado o funcionamento do programa e em seguida os alunos devem responder a questões sobre a forma como foram utilizados threads e pipes no programa. Trabalho não entregue no prazo terá 0,5 ponto descontado por semana de atraso. Após duas semanas de atraso o trabalho não será mais aceito.
Dúvidas
Atendimento aos Alunos
- Horário: Quartas-feiras das 16:00 às 17:40.
- Local: Prédio do INE - Sala 305.
l a u . l u n g @ i n f . u f s c . b r
Mantida por Lau Cheuk Lung. Atualizada em 17/09/2015.