package myAttempt;

public class Solution {
    public static Boolean lock = false;

    public static void main(String[] args) {
        new myThread().start();
        new Thread(() -> {
            synchronized (Solution.lock) {
                try {
                    Thread.sleep(100);
                    Solution.lock.notify();
                    Thread.sleep(100);
                    Solution.lock.notify();
                    Thread.sleep(100);
                    Solution.lock.notify();
                    Thread.sleep(100);
                    Solution.lock.notify();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }

            }
        }).start();
    }
}

class myThread extends Thread {
    @Override
    public void run() {
        synchronized (Solution.lock) {
            for (int i = 0; i < 6; i++) {
                System.out.print(" " + i);
                try {
                    Solution.lock.wait();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
            System.out.println(" ");
        }

    }
}
Друзья привет, пока пытался понять как пользоваться этими двумя методами набросал этот простенький код. Что я ожидаю: в цикле от 0 до 6, мой поток выводит циферку 0 и засыпает, через 100мс нотифайер его будит и он должен вывести циферку 1 и уснуть, через 100мс нотифайер его снова будит и он должен вывести циферку 2 и т.д. Крайне не замысловатая прога, но познавать хочу с максимально простых примеров, однако програма выводит 0 и 1 и засыпает навечно... хотя должна просыпаться дальше... ну это я так хочу, java считает иначе... почему так?