当前位置:首页 > 信息

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

关键字:怎么 / 功能 / 实现 / 定时 / 定时器 / 
金钩王月饼(金钩王月饼与金九月饼哪个最正宗) 沃尔沃s90的价格 新款(沃尔沃s90价格2022款参数) 东元康通的功效(东元康通是正规产品吗) hp青铜时代(青铜时代写的什么意思) 娜仁琪琪格(娜仁其木格是地名吗) 三星pl65(三星pl65相机摄像头不缩回去) VIVO手机最新款是什么型号X70(x70与s15是一个级别吗) 替死者说话(给死去的人说话的经典句子) 传奇服务端购买(天暖和了,我想弄个传奇私服,有谁知道哪里买 中考作文押题2022(意林中考作文押题准吗)

猜你喜欢