Olá, tenho duas threads em uma classe e as duas estão pegando o mesmo numero.
ex. thread 01, pega o numero 01 e a thread 02 pega o numero 02, eu gostaria que fosse contínuo que a thread 01 pega-se o valor 01, a thread 02 pega-se o valor 02 e assim sucessivamente, fiz um método pra controlar isto porém não está dando certo.
Trecho da classe produtor.
for (i = 1; i <= 30; i++ ) {
// Dormindo em um tempo aleatório
try {
Thread.sleep( ( int ) ( Math.random() * 1 ) );
Thread.sleep(500);
}
// Tratamento de exceção
catch( InterruptedException exception ) {
System.err.println( exception.toString() );
}
num=o_Buffer.n(num);
o_Buffer.escreveBuffer(num);
}
Trecho do Método que “n” que deveria incrementar o numero para que não houve-se repetição
public synchronized int n(int num) {
while(!acessivel) { // Não escreve no buffer se diferente
try {
wait( ); //Suspende a thread que chamou o método
} catch ( InterruptedException e) {
e.printStackTrace( );
}
}
acessivel = false;
num++;
acessivel = true;
notify( );
return num;
}