Como retirar da fila em um determinado tempo

3 respostas
A

Olá pessoal, estou com algumas dúvidas sobre um exercício que meu prof da facul pediu para fazer. Eu não estou pedindo para façam o trabalho por mim, só quero algumas dicas do que posso usar. O exercício é o seguinte:

Imagine que vc tem uma fila de banco com 20 pessoas e este banco possui 4 caixas. Quando o banco é aberto 4 pessoas já sairão da fila. E as outras sairão de acordo com o tempo de atendimento de cada caixa:

o caixa 1 atende uma pessoa em 20 segundos;

o caixa 2 atende uma pessoa em 10 segundos;

o caixa 3 atende uma pessoa em 15 segundos;

o caixa 4 atende uma pessoa em 20 segundos;

E sabe-se também que a cada minuto 3 novas pessoas entram na fila.
A pergunta é a seguinte: depois de quanto tempo a fila estará vazia.

Bom pessoal com relação a construir uma fila e fazer os metodos de inserção e remoção td bem. A minha dúvida é como fazer para retirar a pessoa no tempo certo para cada caixa. o q devo usar para contagem de tempo?

3 Respostas

maquiavelbona

É para simular em tempo real ou para somente receber o resultado?
Se for o segundo, perceba que o passo básico de atendimento é 5 segundos, se fizeres um laço de repetição que de acordo com o passo atual subtraia alguém da lista, pode resolver esse exercício facilmente.

Até!

maquiavelbona

Sobre o que vais usar:

  • Laço(s) de repetição;
  • Alguma implementação de List que lhe convier;
  • variáveis simples;

Como podes ver, não é complicado.

Até!

sergiotaborda

Como eu não sou professor de faculdade já lhe adianto que esse problema é um classico. É o padrão Produtor-Comsumidor que é um padrão de trabalho com Threads. Suponho que o objetivo seja criar um simulador do processo usando threads. Partindo desta suposição, vc primeiro precisa entender como funciona esse padrão. Depois deve entender que “fila” é um tipo de dado muito importante e vital nesse padrão. Terceiro, a fila de pessoas é uma metáfora para a fila do codigo.

O padrão é simples. Uma ou mais threads produzem objetos. Uma ou mais threads (diferentes) usam/consomem esses objetos. A ligação das filas é por meio de uma Fila.

Fila é um objeto especial. Em java corresponde com uma interface especial chamada Queue.
Então o seu algoritmo é mais ou menos assim: Uma thread produz 3 objetos pessoa de minuto em minuto, colocando-os na fila. 4 threads, uma para cada caixa retirar uma pessoa de cada vez da fila e “esperam” tempos diferentes até chamar a próxima.

Inicie o simulador e conte quanto tempo leva para a fila ficar vazia.

Criado 19 de agosto de 2007
Ultima resposta 20 de ago. de 2007
Respostas 3
Participantes 3