84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
比如要做一个5点下线的团购,但是如果不用定时器做的话,5点后没人访问,就一直是开启状态,直到第一个人去触发下架动作,这期间要写数不清的烂代码,恳请前辈点拨
业精于勤,荒于嬉;行成于思,毁于随。
quartz
quartz到点定时触发, 或者采用Lazy模式,等一个前端用户触发了这个团购,业务逻辑中检查是否已经过期了,不好的地方在于业务耦合度高了
两个方法: 1. 用crontab指定5点开始执行下架任务。 2. 跑一个服务不断轮询时间,查询到时间要下架的商品,并执行下架任务。
必需quartz
描述的业务逻辑没有看明白,quartz是标配 如果在spring3.x的环境下,最简单的方式: 定时任务的类添加@Component注解,执行任务的方法添加@Scheduled(cron = "0/5 * * * * ?")注解。 让Spring扫描到该类:spring配置文件中加<task:annotation-driven />这个配置, 其中@Scheduled注解是(org.springframework.scheduling.annotation.Scheduled)
<task:annotation-driven />
用quartz是最靠谱的。 但是就像楼主自己说的
5点后没人访问,就一直是开启状态,直到第一个人去触发下架动作
其实这样子做也是蛮靠谱的。就是每次刷这个团购页面都需要去判断一下这个团购是否已经过期。 因为你不能完全依靠定时任务,定时任务只是在确定的时候去做一件事,但是做件事还是需要时间的。所以你最后还需要需要在团购页面渲染的时候做校验的
做个job server
Java中用quartz框架比较好,如果只是简单的任务,直接使用jdk自带的定时任务也可以
org.springframework.scheduling.timer.ScheduledTimerTask
用spring配置一个任务计划,配置好要执行的class就可以了,这样子自己只任务计划的管逻辑内容即可。 或者需要更高级功能,可以使用Job/schedule相关的框架
但是这个功能似乎windows上是利用windows的任务计划调用bat的方式比较多,bat下可以通过java命令来运行一个jar。linux下同样系统也提供了任务计划,调用shell即可
比较复杂的任务,比如定时定点,用Quartz,项目中用到Spring的话,Spring与Quartz可完美结合。 一般简单的任务,每隔多久执行的,可以直接使用jdk自带的。
quartz
quartz到点定时触发,
或者采用Lazy模式,等一个前端用户触发了这个团购,业务逻辑中检查是否已经过期了,不好的地方在于业务耦合度高了
两个方法:
1. 用crontab指定5点开始执行下架任务。
2. 跑一个服务不断轮询时间,查询到时间要下架的商品,并执行下架任务。
必需quartz
描述的业务逻辑没有看明白,quartz是标配
如果在spring3.x的环境下,最简单的方式:
定时任务的类添加@Component注解,执行任务的方法添加@Scheduled(cron = "0/5 * * * * ?")注解。
让Spring扫描到该类:spring配置文件中加
<task:annotation-driven />
这个配置,其中@Scheduled注解是(org.springframework.scheduling.annotation.Scheduled)
用quartz是最靠谱的。
但是就像楼主自己说的
其实这样子做也是蛮靠谱的。就是每次刷这个团购页面都需要去判断一下这个团购是否已经过期。
因为你不能完全依靠定时任务,定时任务只是在确定的时候去做一件事,但是做件事还是需要时间的。所以你最后还需要需要在团购页面渲染的时候做校验的
做个job server
Java中用quartz框架比较好,如果只是简单的任务,直接使用jdk自带的定时任务也可以
org.springframework.scheduling.timer.ScheduledTimerTask
用spring配置一个任务计划,配置好要执行的class就可以了,这样子自己只任务计划的管逻辑内容即可。
或者需要更高级功能,可以使用Job/schedule相关的框架
但是这个功能似乎windows上是利用windows的任务计划调用bat的方式比较多,bat下可以通过java命令来运行一个jar。linux下同样系统也提供了任务计划,调用shell即可
比较复杂的任务,比如定时定点,用Quartz,项目中用到Spring的话,Spring与Quartz可完美结合。
一般简单的任务,每隔多久执行的,可以直接使用jdk自带的。