修改数据库可以使用数据库本身的计划任务(job),这种方式最好。
第二种是使用程序来做如java的timer和timetask。保证在项目启动的时候启动该计划任务。
public static void main(String[] args) {塌埋燃 //定时任务
final Timer timer = new Timer()
// 指定任务在星期四中午12:00执行
Calendar calendar = Calendar.getInstance()
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY)
团虚 calendar.set(Calendar.HOUR_OF_DAY, 12)
calendar.set(Calendar.MINUTE, 00)
calendar.set(Calendar.SECOND, 0)
java.util.Date time = calendar.getTime()
timer.schedule(new TimerTask() {
public void run() {
// 你要执行的 *** 作
try{
液岩 } catch (Exception e) {
// 出现异常的 *** 作:如取消计划任务
timer.cancel()
}
}
},time)
}
有几种方法,我觉得第二种,触发器是个好主意,见下。第一种,开个线程,定式扫描,比如每一分钟查询一次数据库,将前后数据做比对(比对方法可以在java端先把第一次的数据存到一个集合中,然后每次查询集合之后,将两次的内容在java端作比较)
第二种,在数据库端,比如oracle数据库,对这个要监控的表A建个触发器,这个表中如果有数据改变,包括楼主要的新增,修改,删除,都可以被触发,然后把改变的内容存到另一个表B中,然后java就直接从这个B表中查询就可以了,省去了比对的工作。
第三种,如果你是用的类似spring这种框架,spring自带有类似crontab的功能,可以写个一般的java类,这个类中仅仅干判坦蠢查询数据,比对数据的工作,然后调度的工作交给spring框架来做,基本来说这个方掘陪法与第一种相比,只是调度者不同信纳而已
第四种,可以随便写个java类,进行查询比对,然后在跑这个java程序的主机上,比如linux主机,配置一个crontab,来定时调度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)