-
Notifications
You must be signed in to change notification settings - Fork 245
/
Copy pathEvenAndOddPrinterBy2Threads.java
46 lines (38 loc) · 1.39 KB
/
EvenAndOddPrinterBy2Threads.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
package com.javatechie;
public class EvenAndOddPrinterBy2Threads implements Runnable {
static int count = 1;
Object object;
public EvenAndOddPrinterBy2Threads(Object object) {
this.object = object;
}
@Override
public void run() {
while (count <= 100) {
if (count % 2 == 0 && Thread.currentThread().getName().equals("even")) {
synchronized (object) {
System.out.println("Thread Name : " + Thread.currentThread().getName() + " value :" + count);
count++;
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
if (count % 2 != 0 && Thread.currentThread().getName().equals("odd")) {
synchronized (object) {
System.out.println("Thread Name : " + Thread.currentThread().getName() + " value :" + count);
count++;
object.notify();
}
}
}
}
public static void main(String[] args) {
Object lock=new Object();
Runnable r1=new EvenAndOddPrinterBy2Threads(lock);
Runnable r2=new EvenAndOddPrinterBy2Threads(lock);
new Thread(r1, "even").start();
new Thread(r2, "odd").start();
}
}