您的位置:程序门 -> java -> web 开发



timer方法使用求助~! 急~!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


timer方法使用求助~! 急~![已结贴,结贴人:blueqwy]
发表于:2007-07-02 13:44:39 楼主
我要写一个线程,让他再每天的00:00:00   这个时间开始对服务器的数据库备份。
可是timer这个方法不太会用。
        schedule(timertask   task,   date   firsttime,   long   period)  
在我启动服务后,怎么设定date   firsttime     这个时间呀,获取一个时间后,判断他是否时00:00:00??   谢谢高手们的帮助~~!
public   class   schedulelistener   implements   servletcontextlistener
{
        private   java.util.timer   timer   =   null;

        public   void   contextinitialized(servletcontextevent   sce)
        {
                timer   =   new   timer(true);
                date   dt   =   new   date();
                system.out.println(dt.gettime());
                sce.getservletcontext().log(new   java.util.date()   +   "计时器已经启动... ");
                system.out.println(new   java.util.date()   +   "             计时器已经启动... ");
                timer.schedule(new   mytask()   ,   0   ,   2*60*1000);   //每4分钟执行一次

                sce.getservletcontext().log(new   java.util.date()   +   "计时器执行一次!!!!! ");
                system.out.println(new   java.util.date()   +   "                     计时器执行一次!!!!! ");
        }

        public   void   contextdestroyed(servletcontextevent   sce)
        {
                timer.cancel();
                sce.getservletcontext().log(new   java.util.date()   +   "计时器被销毁!!! ");
                system.out.println(new   java.util.date()   +   "                     计时器被销毁!!! ");
        }
}
发表于:2007-07-02 13:52:201楼 得分:10
http://www.128kj.com/article/article5/6ea6e49c9c53f80ff7b059b755f9b801.htm?id=3298
发表于:2007-07-02 13:57:502楼 得分:10
> > > 让他再每天的00:00:00   这个时间开始对服务器的数据库备份。
> > > timer.schedule(new   mytask()   ,   0   ,   2*60*1000);   //每4分钟执行一次
为什么需要每44分钟执行一次呢?

如果希望每天零点执行,可以使用quartz
发表于:2007-07-02 14:11:263楼 得分:10
是啊,推荐用quartz
发表于:2007-07-02 14:25:254楼 得分:0
上边的4分钟是个例子呀,我要进行24小时自动运行一次。
而且服务器不一定是什么时候就会从起的、晕头的问题啊。
发表于:2007-07-02 14:50:555楼 得分:70
举个例子给你:

//每天3点执行
java.util.date   start_time   =   new   java.util.date(
new   java.util.date().gettime()+24*60*60*1000);  
//取第二天的3点,因为有可能现在已经5点了
simpledateformat   sm   =   new   simpledateformat( "yyyymmdd ");
string   cur_date   =   sm.format(start_time)+ "030000 ";
sm   =   new   simpledateformat( "yyyymmddhhmmss ");
start_time   =   sm.parse(cur_date);

timer.schedule(new   spdaily(),start_time,   24*60*60*1000);
发表于:2007-07-02 14:51:416楼 得分:0
0点换成string   cur_date   =   sm.format(start_time)+ "000000 ";
发表于:2007-07-03 11:16:377楼 得分:0
这个方法很好,采用了。可是我在应用中发现,线程被占用着。监听器触发了之后,我对数据库执行了查询,非常慢,我把监听器停止后查询出来的还是之前的数据。
        现在主要的问题出现就是监听器启动后把数据库占用着,不能进行超作。


快速检索

最新资讯
热门点击