This website is for reference purposes only. Users are responsible for any misuse. The owner is not liable for any consequences.
Back to Java Programming (Laboratory)
1.4.2HardCODE

Thread to Print Even and Odd Numbers

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