wait() и notify() в java

257
18 июля 2022, 20:10

Такое дело. Есть список с пассажирами, которые ждут, пока каждого разбудит поток. Но когда он ходит по ним в итерации, просыпается только один. Почему?

На картинке ниже в логах видно, что пассажиры с айди 19 и 12 выходят на одном этаже - но сообщает об этом только один пассажир

Как это выглядит в коде:

//смотрим, какие пассажиры доехали
            passengerArrived = passengers.stream()
                    .filter(p -> p.getDestination() == currentFloor)
                    .collect(Collectors.toList());
//удаляем тех пассажиров, которых мы доставили
            passengers.removeAll(passengerArrived);
//"будим" пассажиров, чтобы те вышли
            for (Passenger pass : passengerArrived) {
                synchronized (pass) {
                    pass.notify();
                }
            }
//------------------------
class Passenger {
///some code
@SneakyThrows
    @Override
    public void run() {
        synchronized (this) {
            log.info("Passenger {} waiting an elevator...", id);
            wait();
            log.info("Passenger {} entered elevator!", id);
            wait();
            log.info("Passenger {} arrived his floor - {}! Good!", id, destination);
        }
    }
}
READ ALSO
При несуществующем RequestMapping возвращается 500 вместо 404

При несуществующем RequestMapping возвращается 500 вместо 404

При несуществующем RequesMapping (к примеру /fsdghfg/dsfgh/sdfghjk/dsfghjk) возвращается 500 вместо 404, ни один из Методов при этом не обрабатывается

155
Запуск jar на терминал

Запуск jar на терминал

Такая проблема: были созданы сервер и клиент и каждый по-отдельности помещён в jar пакетКак запустить сервер и клиент на терминале (Linux)? По отдельности...

224
Вопрос по переопределению метода

Вопрос по переопределению метода

Метод About() переопределен, экземпляр класса создан и данные внесеныПочему метод dino

172
Django HtmlCalendar как перевести месяц на русский язык?

Django HtmlCalendar как перевести месяц на русский язык?

Разрабатываю HTMLCalendar с событиями на Django и не знаю как перевести месяц на русский язык, вывод в английском формате, а мне нужно на русском, может...

346