Trabalho II

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 atrasoApó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.

E-Mail

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.

© Lau Cheuk Lung 2014