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.