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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?相关的知识,希望对你有一定的参考价值。

task 我已经写好,问题是怎么配置servlet定时器?需要监听吗?

看你要求 如果复杂的定时 可以使用 定时框架 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 启动时执行


参考技术A 首先你写一个类去实现 implements ServletContextListener 即Servlet监听器
当Servlet容器创建的时候会执行,也就是说你的tomcat一启动就会执行一次contextInitialized(ServletContextEvent event);
写好这个类以后,要web.xml里做一下配置

<listener>
<listener-class>这里用你的这个类的包名加类名</listener-class>
</listener>
参考技术B

    如果是简单的烂代码,写个死循环,获取当前时间,如果时间到了你想要的时候就执行你想要执行的方法。

    如果要写的好点。起一个线程,线程里给个死循环,获取当前时间,如果为你想要的时间,就另外起一个线程跑你要的程序,如果不是则当前线程睡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();

参考技术C 在linstener 中写个定时器,随服务器启动,而已,再不会私密我,10分钟帮你搞定本回答被提问者采纳

Windows XP Mode base(vhd文件)怎么让其在虚拟机里运行

今天下载了个vmware workstation 本电脑上以前又有Windows XP Mode base(vhd文件)怎么让其在虚拟机里运行呢?求指点。

参考技术A Windows XP Mode base 是win 7 xp 模式下的运行的文件。在vm里是肯定不能用的。

楼主可以安装Windows Virtual PC 或许这个文件还有用。追问

我就是想弄个虚拟机,我的win7 64位 很多软件部兼容,想弄个xp的系统在虚拟机(vmware workstation )里运行 这具体该怎么办呢

追答

那你再vmware workstation 里装个xp系统啊。

网上找个xp系统的iso文件。在vmware workstation 设置iso启动,然后安装xp就可以了啊

本回答被提问者采纳
参考技术B 可以右键,然后选择使用windows xp mode运行追问

出现错误Windows XP Mode base.vhd' is not a virtual machine configuration file (vmx).

参考技术C 我也想那么弄,原来xp里面安装一个程序,现在没有安装盘了,也想这样直接转。 参考技术D 虚拟机里装一个系统不就行了吗

以上是关于java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?的主要内容,如果未能解决你的问题,请参考以下文章

Windows XP Mode base(vhd文件)怎么让其在虚拟机里运行

java web后台通过通讯协议拿到数据后怎么主动让其在前端页面上显示出来?

定时器里如何再累加计时

怎样删除mysql的job定时器

辩护人邓学平发表辩护意见:留张扣扣一命!让其在监狱度过余生

c#中datagridview中能不能给指定的单元格赋值并让其在单元格中显示出来?