java 定时的问题,我现在想实现的是每个月的第四个工作日中午十二点去扫描数据库,修改一个字段的状态

java 定时的问题,我现在想实现的是每个月的第四个工作日中午十二点去扫描数据库,修改一个字段的状态,第1张

修改数据库可以使用数据库本身的计划任务(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,来定时调度。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12247454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存