Untitled
unknown
java
3 years ago
1.6 kB
6
Indexable
public class OddEvenPrinter {
private int count;
private int maxCount;
public OddEvenPrinter(int maxCount) {
this.count = 1;
this.maxCount = maxCount;
}
public synchronized void printOdd() {
while (count <= maxCount) {
if (count % 2 == 1) {
System.out.println("Odd: " + count);
count++;
notify();
} else {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
notify(); // Notify any waiting threads before finishing
}
public synchronized void printEven() {
while (count <= maxCount) {
if (count % 2 == 0) {
System.out.println("Even: " + count);
count++;
notify();
} else {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
notify(); // Notify any waiting threads before finishing
}
public static void main(String[] args) {
final int MAX_COUNT = 10;
OddEvenPrinter printer = new OddEvenPrinter(MAX_COUNT);
Thread thread1 = new Thread(() -> {
printer.printOdd();
});
Thread thread2 = new Thread(() -> {
printer.printEven();
});
thread1.start();
thread2.start();
}
}
Editor is loading...