public void internalMultipleConsumers() throws Throwable {
    for (int i = 0; i < numberOfProducers; i++) {
      producers.add(new TestProducer());
    }

    for (int i = 0; i < numberOfConsumers; i++) {
      consumers.add(new TestConsumer());
    }

    for (Tester test : producers) {
      test.start();
    }

    Thread.sleep(2000);

    for (Tester test : consumers) {
      test.start();
    }

    for (Tester test : consumers) {
      test.join();
    }

    runningProducer = false;

    for (Tester test : producers) {
      test.join();
    }

    for (Throwable e : exceptions) {
      throw e;
    }
  }