Здравствуйте! Я изучаю Java по последнему изданию книги Шилдта, и у меня возникла ошибка с одним из примеров. В консоль данный код выводит только "Для остановки нажмите Ctrl-C", а сама работа потоков не выводится. В чем может быть проблема?
public class Q {
int n;
boolean valueSet = false;
synchronized int get(){
while(!valueSet)
try{
wait();
} catch(InterruptedException e){
System.out.println("Исключение типа InterruptedException перехвачено");
}
System.out.println("Получено: " + n);
valueSet = false;
notify();
return n;
}
synchronized void out(int n){
while(valueSet)
try{
wait();
} catch(InterruptedException e){
System.out.println("Исключение типа InterruptedException перехвачено");
}
this.n = n;
valueSet = true;
System.out.println("отправлено: " + n);
notify();
}
public void put(int i) {
i++;
}
}
class Producer implements Runnable{
Q q;
Producer(Q q){
this.q = q;
new Thread(this, "Поставщик").start();
}
@Override
public void run() {
int i = 0;
while(true){
q.put(i++);
}
}
}
class Consumer implements Runnable{
Q q;
Consumer(Q q){
this.q = q;
new Thread(this, "Потребитель").start();
}
@Override
public void run() {
while (true) {
q.get();
}
}
}
class PCFixed {
public static void main(String args[]){
Q q = new Q();
new Producer(q);
new Consumer(q);
System.out.println("Для остановки нажмите Ctrl-C");
}
}