next up previous
Next: Organização do programa Up: ep3 Previous: O problema

Seu arsenal

Você deve fazer este EP em Java, usando threads Java e os recursos para sincronização entre threads oferecidos pela linguagem (métodos/blocos synchronized, operações wait(), notify() e notifyAll()). Se possível evite o uso de notifyAll(), que facilita os algoritmos mas tende a penalizar o desempenho.

Note que a solução vista em classe para o caso de um barbeiro só (seção 5.2.5 do livro do Andrews) usou um monitor com três variáveis de condição. No caso mais geral de $n$ barbeiros você certamente vai precisar de mais de uma variável de condição. O desafio aqui é implementar em Java algo equivalente a um monitor com múltiplas variáveis de condição. Ler a seção 3.7 (e especificamente o ítem 3.7.3) do livro do Doug Lea deve ajudar você nessa tarefa.



Francisco Reverbel
2002-06-12