Question
Solution
JAVA
package q19684;
import java.util.Scanner;
class NumberPrinter implements Runnable {
private static final Object lock = new Object();
private static int number = 1;
private final int threadType;
private final int maxNumber;
public NumberPrinter(int threadType, int maxNumber) {
this.threadType = threadType;
this.maxNumber = maxNumber;
}
@Override
public void run() {
while (true) {
synchronized (lock) {
while (number <= maxNumber && number % 2 != threadType) {
try {
lock.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
}
if (number > maxNumber) {
lock.notifyAll();
break;
}
System.out.println(Thread.currentThread().getName() + ": " + number);
number++;
lock.notifyAll();
}
}
}
}
// Driver code is given below for your reference
public class EvenOddNumberPrinter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int maxNumber = 0;
boolean validInput = false;
while (!validInput) {
System.out.println("Enter the maximum number to print:");
String input = scanner.nextLine();
try {
maxNumber = Integer.parseInt(input);
if (maxNumber >= 1) {
validInput = true;
} else {
System.out.println("Please enter a number greater than or equal to 1.");
}
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a valid number.");
2/2 test cases passed
2/2 hidden test cases passed