239. Solving the producer-consumer problem via virtual threads (increase/decrease consumers)
Let’s continue our producer-consumer problem with another scenario that starts with three producers and two consumers:
private static final int PRODUCERS = 3;
private static final int CONSUMERS = 2;
Let’s assume that each producer checks a bulb in no more than one second. However, a consumer (packer) needs a maximum of 10 seconds to pack a bulb. The producer and consumer times can be shaped as follows:
private static final int MAX_PROD_TIME_MS = 1 * 1000;
private static final int MAX_CONS_TIME_MS = 10 * 1000;
Obviously, in these conditions, the consumers cannot face the incoming flux. The queue (here, LinkedBlockingQueue
) used for storing bulbs until they are packed will continuously increase. The producers will push into this queue much faster than the consumers can poll.
Since we have only two consumers, we have to increase their number to be able to...