Выполнить код Java в определенное время

1

Я разрабатываю код футбольного менеджера, который обрабатывает игру между друзьями, где люди должны скомпилировать свою команду, и когда начинаются реальные матчи, у которых есть игроки, которые лучше играют в игру.

Очевидно, что после того, как игра началась, игроки больше не могут менять свою команду. В базе данных каждый матч имеет атрибут "match is open", который определяет, могут ли игроки по-прежнему менять свою команду. Как только значения установлены ложными, игроки больше не могут редактировать свою команду.

Таким образом, в основном у меня есть дата и время, и когда эта дата происходит, значение в базе данных должно быть установлено равным false.

Я думал, что многие альтернативы я вам объясню:

  • Очевидно, что наиболее грязным и наивным является регистрация на сервере, открытие dbms и запрос db, чтобы установить значение в false. Очень грязное решение.
  • Создайте пакетный скрипт и поместите его в запланированные задачи. Это решение слишком грязно, так как каждую неделю я могу войти на сервер, чтобы отредактировать скрипт с новой датой.
  • В webapp выполните некоторый контроль, например: "Когда один из пользователей пытается отредактировать свою команду, если прошло время, установите для атрибута" open "значение false для всех". Эти решения кажутся грязными, потому что, пока кто-то не пытается изменить формации, и система распознает проблему, формации де-факто открыты.
  • Учитывая дату, когда x час приходит, код автоматически запускает метод, который закрывает команды.

Последнее - это решение, которое я бы предпочел разработать, я знаю, что есть библиотеки, которые позволяют работать с расписанием, но я действительно не знаю, возможно ли подобное, и как бы вы разработали этот материал.

Любой намек будет оценен.

  • 0
    Я до сих пор не понимаю, когда вы хотите установить поля в false .
  • 2
    я считаю, что это называется футбол, а не футбол, и вы смотрели на весенний планировщик docs.spring.io/spring/docs/current/spring-framework-reference/…
Показать ещё 4 комментария
Теги:
spring
spring-mvc
time
scheduling

4 ответа

1

Вот пример, который мы используем:

@Configuration
@EnableScheduling
public class SchedulerConfiguration {

   @Scheduled(cron = "15 * * * * ") //every 15 minutes
   public void scheduledTask() {
      doSomethingInYourDatabase();
   }

}
  • 0
    Это на самом деле весенний способ сделать это: D
1

Возможно, Quartz Framework может быть вам интересен. Он имеет интерфейс Job, который можно планировать как задачи Cron.

0

я бы порекомендовал, использовать ли весенний планировщик (если вы используете весну) или простой сервис-исполнитель java для запуска метода aa, и позволяет говорить за 5 минут после предыдущего выполнения. посмотрите здесь http://tutorials.jenkov.com/java-util-concurrent/executorservice.html

На самом деле вам просто нужно запустить простой запрос на обновление, например

update match set match_open = false where start_time = (Sysdate-X);
0

Может быть, вы используете весну. вы можете добавить класс обслуживания (@Service) и использовать аннотированный метод @Scheduled, который поможет вам выполнить задачу с заданным интервалом. Проверка деталей весеннего планирования

@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
    //something that should execute on weekdays only
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню