Printing Even and Odd using two Threads in Java

Write a java program to print even and odd values in sequence.
Expected result:
Odd:1
Even:2
Odd:3
Even:4
Odd:5
Even:6
Odd:7
Even:8
Odd:9

Solution:
package com.tutorialsdesk.Thread;

public class PrintEvenOdd {

        public static void main(String ... args){
        Printer print = new Printer();
        Thread t1 = new Thread(new TaskEvenOdd(print, 10,  false));
        Thread t2 = new Thread(new TaskEvenOdd(print, 10, true));
        t1.start();
        t2.start();
    }
        
}

class TaskEvenOdd implements Runnable {
    private int max;
    private Printer print;
    private boolean isEvenNumber;

    TaskEvenOdd(Printer print, int max, boolean isEvenNumber){
        this.print = print;
        this.max = max;
        this.isEvenNumber = isEvenNumber;
    }

    @Override
    public void run() {
        int number = isEvenNumber == true ? 2 : 1;
        while(number<= max){
            if(isEvenNumber){
                print.printEven(number);
            }   
            else {
                print.printOdd(number);
            }
            number+=2;
        }
        }
}

class Printer {
    boolean isOdd= false;
    synchronized void printEven(int number) {
        while(isOdd == false){
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Even:"+number);
        isOdd = false;
        notifyAll();
    }
    synchronized void printOdd(int number) {
        while(isOdd == true){
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Odd:"+number);
        isOdd = true;
        notifyAll();
    }
}


Output :
Odd:1
Even:2
Odd:3
Even:4
Odd:5
Even:6
Odd:7
Even:8
Odd:9
Even:10