2015-03-23 2 views
1

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

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

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

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

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

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

Подсказка будет оценена по достоинству.

+0

Я все еще не понимаю, когда вы хотите установить поля в 'false'. –

+2

Я верю, что это называется футбол, а не футбол, и посмотрели ли вы на весенний планировщик http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html – user902383

+1

Просьба представить код, что ты пробовал . –

ответ

1

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

0

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

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

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

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

@Configuration 
@EnableScheduling 
public class SchedulerConfiguration { 

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

} 
+0

Это на самом деле весенний путь: D – NeoP5

0

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

@Scheduled(cron="*/5 * * * * MON-FRI") 
public void doSomething() { 
    //something that should execute on weekdays only 
} 
Смежные вопросы