207k views
4 votes
Implement programming project 4 "The Producer-Consumer Problem" in chapter 7 of the textbook (P43 to P45 of eTextbook)1. You should solve the producer-consumer problem using the Pthreads API. Your program should allow creating multiple producer and consumer threads. Three parameters are passed on the command line: 1. How long the main thread sleep before terminating (in seconds) 2. The number of producer threads 3. The number of consumer threads

1 Answer

5 votes

Answer:

See explaination

Step-by-step explanation:

import java.util.LinkedList;

public class Threadexample

{

public static void main(String[] args)

throws InterruptedException

{

final PC pc = new PC();

Thread t1 = new Thread(new Runnable()

{

public void run()

{

try

{

pc.produce();

}

catch(InterruptedException e)

{

e.printStackTrace();

}

}

});

Thread t2 = new Thread(new Runnable()

{

public void run()

{

try

{

pc.consume();

}

catch(InterruptedException e)

{

e.printStackTrace();

}

}

});

t1.start();

t2.start();

t1.join();

t2.join();

}

public static class PC

{

LinkedList<Integer> list = new LinkedList<>();

int capacity = 2;

public void produce() throws InterruptedException

{

int value = 0;

while (true)

{

synchronized (this)

{

while (list.size()==capacity)

wait();

System.out.println("Producer produced-"

+ value);

list.add(value++);

notify();

Thread.sleep(1000);

}

}

}

public void consume() throws InterruptedException

{

while (true)

{

synchronized (this)

{

while (list.size()==0)

wait();

int val = list.removeFirst();

System.out.println("Consumer consumed-"

+ val);

notify();

Thread.sleep(1000);

}

}

}

}

}

User Javette
by
5.6k points