oi pessoal.
to c 1 problema, estou a tentar k 3 threads insiram um valor numa classe comum, antes k outra thread retire um valor dessa mesma classe. consegui sincronizar com 2 threads, uma a inserir e so depois a outra a retirar, mas com 3 a inserir n consigo. o codigo p 2 threads k to a utilizar é o seguinte:
public class Banca {
boolean verifica=false;
int valor;
public static void main(String[] args) {
Banca b=new Banca();
Produtor p=new Produtor(b);
Consumidor c=new Consumidor(b);
}
public synchronized void insere(int valor){
while (verifica) {
try {
wait();
} catch (InterruptedException e) {}
}
this.valor=valor;
System.out.println("Produtor: "+valor);
verifica = true;
notify();
}
public synchronized void remove(){
while (!verifica) {
try {
wait();
} catch (InterruptedException e) {}
}
System.out.println("Consumidor: "+valor);
this.valor=0;
verifica = false;
notify();
}
}
///////////////////////////////////////////////////
public class Produtor extends Thread{
Banca banca;
Random r=new Random();
public Produtor(Banca banca){
this.banca=banca;
start();
}
public void run(){
boolean test=false;
int i = 0;
while (i!=10) {
i++;
banca.insere(r.nextInt(20)+1);
}
}
}
o codigo do consumidor é identico ao do produtor
ja tentei varias formas, com 1 metodo k va verificando com boolean se ja inseriu a 1ª thread a 2ª e etc mas n tive muito sucesso
disseram-me k poderia arranjar outra thread p sincronizar estas mas n sei como
se alguem me poder ajudar agradeço