• 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>
    <!-- 监听器配置结束 -->
    以上步骤完成后,一个简单的定时器就算开发完成了。

  • 相关阅读:
    使用cordova,监听安卓机物理返回按键,实现退出程序的功能
    使用cordova network-information 插件监听手机网络状态
    使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能
    使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,
    phpStudy的安装和配置
    小程序入坑(一)---如何引入iconfont 字体图标
    HTML5 原生API input file 来实现多图上传,并大图预览
    webpack引入全局jQuery
    前端滑动分页获取数据(jQuery)
    开源蚂蚁笔记自建服务器
  • 原文地址:https://www.cnblogs.com/renpei/p/5477897.html
Copyright © 2020-2023  润新知