Пример #1
0
  public static void main(String[] args) throws InterruptedException {
    Consumer[] consumers = new Consumer[NUM_OF_CONSUMERS];
    Warehouse warehouse = Warehouse.getInstance();
    Store[] stores = Store.getAllInstances();

    for (int i = 0; i < NUM_OF_CONSUMERS; i++) {
      consumers[i] = new Consumer();
      new Thread(consumers[i]).start();
    }
    for (Store s : stores) {
      new Thread(s).start();
    }

    Thread printingThread =
        new Thread(
            () -> {
              try {
                while (true) {
                  Thread.sleep(1000);
                  int consumersHave = 0;
                  for (Consumer consumer : consumers) {
                    consumersHave += consumer.getNumOfEatenItems();
                  }
                  int storesHave = 0;
                  for (Store s : stores) {
                    storesHave += s.getCurrentNumOfItems();
                  }
                  System.out.print("Warehouse = " + warehouse.getCurrentNumOfItems());
                  System.out.print(" Stores = " + storesHave);
                  System.out.println(" Consumer have = " + consumersHave);
                  System.out.println(
                      "Number of items = "
                          + (consumersHave + storesHave + warehouse.getCurrentNumOfItems()));
                }
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
            });
    printingThread.start();
    printingThread.join();
  }