Я делаю свое первое клиент-серверное приложение. Это имитация лифта. Я сделал сервер с использованием весенней загрузки и клиентской части на JavaFX. Мой лифт должен перемещаться между этажами в течение 10 секунд.
Это мой метод POST, куда я отправляю целевой этаж: (Я не знаю почему, но целочисленные значения не приходят)
@PostMapping()
public String postEndPoint(@RequestBody String floor) {
return elevatorService.setFloor(Integer.valueOf(floor));
}
Метод набора:
public String setFloor(Integer floor) {
if (!isPressed(floor)) { // if button isn't pressed, add to list
list.add(floor);
}
targetFloor = list.get(list.size() - 1);
motion();
if (list.get(list.size() - 1) == currentFloor) { // when we arrive, delete pressed button
list.remove(list.size() - 1);
}
return String.valueOf(floor);
}
private boolean isPressed(Integer floor) {
return list.contains(floor);
}
и логика движения:
private void motion() {
new Thread(() -> {
try {
Thread.sleep(10000);
if (currentFloor < targetFloor) {
currentFloor++;
} else {
currentFloor--;
}
if (currentFloor != targetFloor) {
motion();
}
} catch (InterruptedException ignored) { }
}).start();
}
Это хорошо работает, если я нажимаю на нужном этаже и жду, когда лифт прибудет, но если я вызываю лифт на нескольких этажах одновременно, это работает неправильно.
Может ли кто-нибудь помочь мне решить эту проблему? Спасибо.