-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04 Producer_Consumer.java
61 lines (52 loc) · 1.42 KB
/
04 Producer_Consumer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package javaapplication1;
import java.util.Scanner;
/**
*
* @author Student
*/
public class Producer_Consumer {
static int mutex=1,E=5,f=0;
static int wait(int s){
return --s;
}
static int signal(int s){
return ++s;
}
static void producer(){
mutex= wait (mutex);
f= signal(f);
E=wait(E);
System.out.println("producer is done");
mutex=signal(mutex);
}
static void consumer(){
mutex=wait(mutex);
f=wait(f);
E= signal(E);
System.out.println("consumer is done");
mutex=signal(mutex);
}
public static void main(String[] args) {
while(true){
System.out.println("Enter 1 for producer");
System.out.println("Enter 2 for consumer");
Scanner sc =new Scanner(System.in);
int a= sc.nextInt();
switch(a){
case 1:
if(mutex==1 && f!=5)
producer();
else
System.out.println("producer waiting");
break;
case 2:
if (mutex==1 && E!=5) {
consumer();
}
else
System.out.println("consumer waiting");
break;
case 3:
System.exit(a);
}}
}}