In the world of concurrent programming, the producer-consumer problem is a classic synchronization challenge, it involves coordinating actions of two or more threads where one thread known as the producer generates data and the other thread known as the consumer consumes the data.
In Java the producer thread is responsible for producing items to the queue and the consumer thread is responsible for consuming items from the queue. If the queue is empty, the consumer thread will call the wait method and enter the waiting state. after producing items to the queue producer thread is responsible to call notify method then the waiting consumer will get a thread notification and continues its execution with updated item.
class ProducerThread{
produce() {
synchronized (queue) {
//produce items to the queue
queue.notify();
}
}
}
class ConsumerThread{
consumer(){
synchronized (queue){
if(queue is empty){
queue.wait();
} else{
// consumes items
}
}
}
}
The above code is only for demonstration purpose to show working of Producer – Consumer Problem
For working Java code for Producer-consumer check here