next up previous
Next: Organiza��o do programa Up: Requisitos Previous: Requisitos

Seu arsenal

Voc� deve fazer este EP em Java, usando threads Java e os recursos b�sicos 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. Como a id�ia � trabalhar no n�vel das primitivas b�sicas para sincroniza��o entre threads Java, n�o devem ser usadas as classes de mais alto n�vel definidas nos pacotes java.util.concurrent, java.util.concurrent.atomic e java.util.concurrent.locks.

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 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, a subse��o 3.7.3) do livro do Doug Lea deve ajudar voc� nessa tarefa. Antes de fazer isso (e antes de qualquer outra coisa), voc� precisa saber de uma pedra no seu caminho: o problema do aninhamento de monitores Java (subse��o 3.3.4 do livro do Doug Lea).


next up previous
Next: Organiza��o do programa Up: Requisitos Previous: Requisitos
Francisco Reverbel
2006-05-22