java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?

task我已经写好,问题是怎么配置servlet定时器?需要监听吗?... task 我已经写好,问题是怎么配置servlet定时器?需要监听吗? 展开
 我来答
a11e90
推荐于2017-11-25 · 知道合伙人软件行家
a11e90
知道合伙人软件行家
采纳数:473 获赞数:1702
qq交流群:208779755 博客:https://my.oschina.net/haitaohu

向TA提问 私信TA
展开全部

看你要求 如果复杂的定时 可以使用 定时框架 quartz,如果简单的定时可以使用

package test;
import java.util.Timer;
public class TimeTaskTest {
   public static void main(String[] args){

      Timer timer = new Timer(); 
      timer.schedule(new Task(), 60 * 1000);
    }
}


package test;
import java.util.TimerTask;
public class Task extends TimerTask {

   public void run()
  {
    System.out.println("定时任务执行");
  }

}
追问
我的需求很简单,就是每隔24小时,清空hashmap,但我的是个网站,需要放在服务器上,我每次运行,都要运行个main方法吗?又没有随着项目一起启动的方法?
追答

你可以定义一个 监听器来在项目启动的时候 执行他

在 web.xml中配置

<listener>
    <listener-class>com.init.InitData</listener-class>
  </listener>
public class InitData implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {
// web停止时执行
}

@Override
public void contextInitialized(ServletContextEvent arg0) {
//web 启动时执行
}

}
QQMSD8
2015-01-24 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
首先你写一个类去实现 implements ServletContextListener 即Servlet监听器
当Servlet容器创建的时候会执行,也就是说你的tomcat一启动就会执行一次contextInitialized(ServletContextEvent event);
写好这个类以后,要web.xml里做一下配置

<listener>
<listener-class>这里用你的这个类的包名加类名</listener-class>
</listener>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
托多罗夫1
2018-04-08 · TA获得超过2111个赞
知道小有建树答主
回答量:10
采纳率:85%
帮助的人:9833
展开全部
  1. 如果是简单的烂代码,写个死循环,获取当前时间,如果时间到了你想要的时候就执行你想要执行的方法。

  2. 如果要写的好点。起一个线程,线程里给个死循环,获取当前时间,如果为你想要的时间,就另外起一个线程跑你要的程序,如果不是则当前线程睡30秒或者1分钟什么的。

代码如下:

  • public class Task1

  • {public static void main(String[] args) {

  • // run in a second

  • final long timeInterval = 1000;

  • Runnable runnable = new Runnable() {

  • public void run() {

  • while (true) {

  • // ------- code for task to run

  • System.out.println("Hello !!");

  • // ------- ends here

  • try {

  • Thread.sleep(timeInterval);

  • } catch (InterruptedException e) {

  • e.printStackTrace();
    }
    }
    }
    };

  • Thread thread = new Thread(runnable);

  • thread.start();
    }
    }

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心猿亦深锁
2015-02-07 · 超过19用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:33.6万
展开全部
在linstener 中写个定时器,随服务器启动,而已,再不会私密我,10分钟帮你搞定
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式