2016-04-09 3 views
-3

Мне был дан этот пример в школе, чтобы помочь мне узнать о производителях/потребителях, и я не могу понять это. Я провел весь день на этом и никуда не денусь.Я не понимаю этого примера производителя/потребителя

Может ли кто-нибудь сказать мне, почему он не будет работать?

Благодаря

public class CarPark { 
    public static void main(String[] args) { 

     CarParkControl carpark = new CarParkControl(4); 

     Thread arrivals = new Thread(new Arrivals(carpark)); 

     Thread departures = new Thread(new Departures(carpark)); 

     arrivals.start(); 
     departures.start(); 

    }//main 
}//CarPark 



class Arrivals implements Runnable { 

    CarParkControl carpark; 
    Arrivals(CarParkControl c) {carpark = c;} 

    public void run() { 
     try { 
     while(true) { 
      carpark.arrive(); 
      Time.delay(RandomGenerator.integer(0,520)); 
     } 
     } catch (InterruptedException e){} 
    } 
} 



class Departures implements Runnable { 

    CarParkControl carpark; 
    Departures(CarParkControl c) {carpark = c;} 

    public void run() { 
     try { 
     while(true) { 
      carpark.depart(); 
      Time.delay(RandomGenerator.integer(0,520)); 
     } 
     } catch (InterruptedException e){} 
    } 
} 



class CarParkControl { 

    protected int spaces; 
    protected int capacity; 

    CarParkControl(int capacity) 
    {capacity = spaces = n;} 

    synchronized void arrive() throws InterruptedException { 
     while (spaces==0) wait(); 
     --spaces; 
     notify(); 
    }//arrive 

    synchronized void depart() throws InterruptedException { 
     while (spaces==capacity) wait(); 
     ++spaces; 
     notify(); 
    }//depart 

}//CarParkControl 
+2

Пожалуйста, оставляйте любые ошибки, которые вы получаете. –

+2

Что заставляет вас думать, что это не сработает? Эта программа никогда ничего не печатает на экране, поэтому, если вы получаете пустой экран, это нормально. –

+2

Что такое 'n' в конструкторе' CarParkControl'? Нет 'n'! – ArcticLord

ответ

1

Эта линия не компилировать

capacity = spaces = n; 

должно быть

this.capacity = spaces = capacity; 

, как нет n

Я предлагаю вам прогу ram для компиляции, прежде чем пытаться запустить его.

Смежные вопросы