Tuesday, 23 January 2018

Implement producer consumer IPC problem using multi-threading.


Program:-
import java.util.*;
class IPC
{
            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 item: "+ 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 item: "+ val);
                                                            notify();
                                                            Thread.sleep(1000);
            }
        }
    }
}


class u72
{  
            public static void main(String[] args) throws InterruptedException
    {
        IPC ob = new IPC();

        Thread t1 = new Thread(new Runnable()
        {
            public void run()
            {
                try
                {
                    ob.produce();
                }
                catch(InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        });

        Thread t2 = new Thread(new Runnable()
        {
            public void run()
            {
                try
                {
                    ob.consume();
                }
                catch(InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        });

        t1.start();
        t2.start();

        t1.join();
        t2.join();
    }
}

No comments:

Post a Comment

It's time To increase blogging capability. To have a chance to contribute in digital world. Any Interested People who want to make t...