zoukankan      html  css  js  c++  java
  • java中实现定时功能

    网上资料:

    我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下:

    1、基础知识
    java.util.Timer
    一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步。
    java.util.TimerTask
    由 Timer 安排为一次执行或重复执行的任务。

    2、示例代码
    该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日志中。
    首先创建一个需要定时执行的任务类,这个任务类需要继承TimerTask,然后重写run()方法,run()方法体中的代码就是定时需要执行的操作,在本demo中,就是获取连接池中当前可用连接数,并输出到日志中,具体实现代码如下:
    public class TaskAvailableConnectNumber extends TimerTask {
    private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
    private ConnectionPool pool=ConnectionPool.getInstance();
    @Override
    publicvoid run() {
    log.debug("当前连接池中可用连接数"+pool.getAvailableConnectNumber());
    }
    }
    下面定义一个监听器,负责在应用服务器启动时打开定时器,监听器需要实现ServletContextListener接口,并重写其中的contextInitialized()和contextDestroyed()方法,代码如下:
    public class OnLineListener implements ServletContextListener{
    private Logger log = Logger.getLogger(OnLineListener.class);
    Timer timer = null;
    //在应用服务器启动时,会执行该方法
    publicvoid contextInitialized(ServletContextEvent arg0) {
    //创建一个定时器,用于安排需要定时执行的任务。
    timer = new Timer();
    //为定时器安排需要定时执行的任务,该任务就是前面创建的任务类TaskAvailableConnectNumber,并指定该任务每30分钟执行一次。
    timer.schedule(new TaskAvailableConnectNumber(), 0, 30*60*1000);
    log.debug("启动定时器");
    }
    //应用服务器关闭时,会执行该方法,完成关闭定时器的操作。
    public void contextDestroyed(ServletContextEvent arg0) {
    if(timer!=null){
    timer.cancel();//关闭定时器
    log.debug("-----定时器销毁--------");
    }
    }
    }
    监听器要想正常运行,需要在web.xml文件中进行配置,配置信息如下:
    <!-- 监听器配置开始 -->
    <listener>
    <listener-class>
    cn.sdfi.listen.OnLineListener
    </listener-class>
    </listener>
    <!-- 监听器配置结束 -->
    以上步骤完成后,一个简单的定时器就算开发完成了。

  • 相关阅读:
    java学习笔记(四)
    Sigmoid 函数
    Neural Architectures for Named Entity Recognition 学习笔记
    java学习笔记(三)
    java学习笔记(二)
    Java学习笔记(一)
    shell 小技巧
    Network Embedding 相关论文
    C++学习笔记(二)
    js判断某字符出现的个数
  • 原文地址:https://www.cnblogs.com/renpei/p/5477897.html
Copyright © 2011-2022 走看看