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 считает иначе... почему так?Lyokha Blagodatskikh
48 уровень
Помогите понять wait() & notify()
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Lyokha Blagodatskikh
22 декабря 2022, 13:16
Самый универсальный комментарий тут будет: чувак, у тебя каша в голове, иди домой спи, ты устал )
0
Lyokha Blagodatskikh
22 декабря 2022, 13:01
Так... что то да получилось... в анонимном потоке не освобождался монитор и все нотифайеры выполнялись разом... вот так вроде бы работает, но!
Если запустить, то видно что интервалы между выводами цифр крайне не равномерные... видимо я написал что то, без полного понимания как оно работает... должны ведь быть ровные интервалы по 100мс... 0
Lyokha Blagodatskikh
22 декабря 2022, 13:13
запускал несколько раз, каждый раз интервалы разные)))) ыыы))) даже интересно, как это я так сделал )))
0
Lyokha Blagodatskikh
22 декабря 2022, 12:50
Кажется я с мониторами запутался, но чот ваще туплю не могу допедрить как надо сделать.
0