Sobre o seguinte código:
[code=java]
public class Consumidor2 {
public static void main(String[] args) {
Produtor2 p = new Produtor2();
p.start();
synchronized(p){
try{
System.out.println("Aguardando o produtor produzir!");
p.wait();
System.out.println("Agora já posso consumir!!!");
}
catch(InterruptedException e){
}
}
}
}
class Produtor2 extends Thread{
public void run(){
int total = 0;
synchronized(this){
for(int i=0;i<100;i++){
total+=i;
}
notify();
}
}
}
Eu gostaria de saber o propósito do wait§ na primeira classe. Se eu sincronizo a instância ‘p’ porque preciso sincronizar o objeto (bloco) na segunda classe com o “synchronized(this){}”? Além disso, pelo código, há possibilidade do notify() na segunda classe ocorrer antes do p.wait() já que se trata se uma thread também sendo executada?
Obrigado.