ono veramente alle prime armi con java, mi spiegate perchè nel seguente
codice :

**************************************************
public class ProducerConsumerTest {
public static void main(String[] args) {
Cubbyhole c = new CubbyHole();
Producer p1 = new Producer(c, 1);
Consumer c1 = new Consumer(c, 1);

p1.start();
c1.start();
}
....
....
}


public class Producer extends Thread {
private Cubbyhole cubbyhole;
private int number;

public Producer(Cubbyhole c, int number) {
cubbyhole = c;
this.number = number;
}
public void run(){
for(int i=0; i<o; i++) {
cubbyhole.put(i);
System.out.println("Producer #" + this.number + " put: " +i);
try {
sleep((int)(Math.random() * 100));
} catch(interruptedException e) {}
}
}
}

public class Consumer extends Thread {
private CubbyHole c;
private int number;

public Consumer(CubbyHole c, int number){
cubbyhole=c;
this.number = number;
}

public void run() {
//segue codice analogo alla classe Producer
}
}
****************************************


usa nei costruttori di Producer e Consumer solamente
cubbyhole = c;
this.number = number;

e non

this.cubbyhole = c;
this.number = number;

cubbyhole è una classe con metodi get e put sincronizzati e wait e signal
per la sincronizzazione.