Thread - Produtor / Consumidor

1 resposta
P

Vi um exmeplo de Produtor / Consumidor utilizando thread… mas fiquei com uma duvida.

class buffer{

…

pubic void set (int value){

while(!isEmpty){

canWrite.await();

}

}

}

A thread entrará em estado de espera quando o buffer nao estiver vazio. Assim que a consumidora ler o buffer ela chamará canWrite.signal, e setará isEmpty para true e a thread produtora continuará…

Minha duvida é a seguinte… Por que preciso de um loop (WHILE), Se implementasse com um IF nao funcionaria?

Ex: o buffer tá cheio, a thread produtora entra em espera… O consumidor esvazia o buffer e dá um canWrite.signal… Pra que o uso do WHILE??

obrigado!

1 Resposta

T

É necessário usar while, não if, porque “await” pode acordar por algum outro motivo que não seja o consumidor usar “signal”. Leia o javadoc com mais atenção.

Criado 9 de janeiro de 2007
Ultima resposta 9 de jan. de 2007
Respostas 1
Participantes 2