制片人/消费者 - 计算平均时间

时间:2014-04-01 19:37:46

标签: java producer-consumer

我有4个班级 - 制作人,消费者,商店,主要。

尝试计算客户在等待进入商店的队列中的平均等待时间。

我在Producer中的运行方法 -

public void run() {
  for (int i = 1; i < size; i++) {

     shop.put(i);
     System.out.println("Customer number "  + i + " has entered the store\n");
     enterStore = System.currentTimeMillis();
     try {
        Thread.sleep((int) (Math.random() * 1000));

     } catch (InterruptedException e) { }
  }
}

Shop中的put方法的一部分 -

System.out.println("The store is full! Customer " + value + " is waiting in the queue.....\n");
        queueStart = System.currentTimeMillis();
        System.out.println("Customer joined queue at time : " + queueStart);

        wait();

我的主要部分 -

double averageTime = (Shop.queueStart - Producer.enterStore)/20;
  System.out.println("Average time customer queued outside store = " + averageTime);

我的代码中的其他所有内容都运行良好 - 但是平均值会打印一个减号,所以我在某处显然出了问题。我是java的新手,只是寻求帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

时间越晚,double值越高,因此需要切换减法操作数,以便得到

Producer.enterStore - Shop.queueStart