在特定时间执行java代码
我正在开发一个足球经理代码,用于处理朋友之间的游戏,在游戏中,人们需要组建自己的球队,当真正的比赛开始时,谁的球员打得更好,谁就会赢得比赛 显然,一旦比赛开始,球员们就不能再改变球队了。在数据库中,每场比赛都有一个属性“match is opened”,用于确定球员是否仍然可以更改球队。一旦值设置为false,球员就不能再编辑他们的球队了 所以基本上我有一个datetime,当这个日期出现时,数据库上的值必须设置为false 我想了很多选择,我将向你解释:在特定时间执行java代码,java,spring,spring-mvc,time,scheduling,Java,Spring,Spring Mvc,Time,Scheduling,我正在开发一个足球经理代码,用于处理朋友之间的游戏,在游戏中,人们需要组建自己的球队,当真正的比赛开始时,谁的球员打得更好,谁就会赢得比赛 显然,一旦比赛开始,球员们就不能再改变球队了。在数据库中,每场比赛都有一个属性“match is opened”,用于确定球员是否仍然可以更改球队。一旦值设置为false,球员就不能再编辑他们的球队了 所以基本上我有一个datetime,当这个日期出现时,数据库上的值必须设置为false 我想了很多选择,我将向你解释: 显然,最肮脏和最幼稚的做法是登录到服
- 显然,最肮脏和最幼稚的做法是登录到服务器,打开dbms并查询db以将值设置为false。非常脏的溶液
- 制作一个批处理脚本并将其放入计划任务中。这个解决方案也是非常肮脏的,因为每周我都要登录服务器,用新的日期编辑脚本
- 在webapp上进行一些控制,比如:“当一个用户试图编辑他的团队时,如果时间已过,则为每个人将“打开”属性设置为false。”这种解决方案似乎是肮脏的,因为在有人尝试更改队形并且系统意识到问题之前,队形实际上是开放的
- 给定一个日期,当x小时到达时,代码自动启动一个关闭团队的方法李>
如有任何提示,我们将不胜感激。也许您会感兴趣。它有一个作业接口,可以像Cron任务一样进行调度。我建议您是使用spring调度器(如果您使用spring)还是使用简单的java executor服务来运行方法,比如说在上一次执行后延迟5分钟。看看这里 实际上,您只需要运行一个简单的更新查询,如
update match set match_open = false where start_time = (Sysdate-X);
下面是我们使用的一个示例:
@Configuration
@EnableScheduling
public class SchedulerConfiguration {
@Scheduled(cron = "15 * * * * ") //every 15 minutes
public void scheduledTask() {
doSomethingInYourDatabase();
}
}
可能你正在使用弹簧。您可以添加服务类(@Service)并使用@Scheduled注释方法,该方法将帮助您按定义的间隔执行任务。查看详细信息
我仍然不明白您何时要将字段设置为
false
。我相信它被称为football而不是soccer,您看过spring scheduler了吗?请提供您尝试过的代码。而不是标志栏,为什么不在match\u start
时间戳列中设置一个match\u start
,然后在match\u start
之后不允许进行任何更改?@RohitJain我想在真正的匹配开始前半小时将属性设置为false。这实际上是spring的方法:D
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
//something that should execute on weekdays only
}