Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

1 package thread2;

2 import java.util.*;
3
4
5 class producer implements Runnable
6 {
7 private List <String> buffer;
8 public producer(List<String> buffer)
9 {
10 this.buffer=buffer;
11 }
12
13 public void run()
14 {
15 String numbers[]= {"1","2","3"};
16 for (String number:numbers)
17 {
18 synchronized(buffer)
19 {
20 buffer.add(number);
21 try {
22 Thread.sleep(2000);
23 } catch (InterruptedException e) {
24 // TODO Auto-generated catch block
25 e.printStackTrace();
26 }
27
28 System.out.println(Thread.currentThread().getName()+"added"+number);
29 }
30 }
31
System.out.println(Thread.currentThread().getName()+"added"+ProducerConsumer.E
ND);
32 synchronized(buffer) {
33 buffer.add(ProducerConsumer.END);
34 }
35 }
36
37
38
39
40
41 }
42
43 class consumer implements Runnable
44 {
45 private List<String> buffer;
46 public consumer(List<String> buffer)
47 {
48 this.buffer=buffer;
49 }
50 public void run()
51 {
52 while(true) {
53 synchronized(buffer){
54
55 if(buffer.isEmpty())
56 {
57 continue;
58 }
59 if (buffer.get(0).equals(ProducerConsumer.END))
60 {
61 System.out.println(Thread.currentThread().getName()+"Exiting");
62 break;
63 }
64 else
65 {
66
System.out.println(Thread.currentThread().getName()+"Removed"+buffer.r
emove(0));
67
68 try {
69 Thread.sleep(5000);
70 } catch (InterruptedException e) {
71 // TODO Auto-generated catch block
72 e.printStackTrace();
73 }
74 }
75 }
76
77 }
78 }
79
80
81 }
82 public class ProducerConsumer
83 {
84 public static final String END="END";
85 public static void main (String args[])
86 {
87
88 List<String> buffer=new ArrayList<>();
89 producer p=new producer(buffer);
90 consumer c=new consumer(buffer);
91
92 Thread pt=new Thread(p);
93 pt.setName("ProducerThread");
94 Thread ct=new Thread(c);
95 ct.setName("ConsumerThread1");
96 Thread ct1=new Thread(c);
97 ct1.setName("ConsumerThread2");
98 pt.start();
99 ct.start();
100
101
102 ct1.start();
103 // Two consumer thread has been created to show that only one consumer will get
chance to consume as producer is one and it will produce 3 item only.
104
105 }
106
107 }
108

You might also like