当前位置:首页 » 编程语言 » javatimer定时

javatimer定时

发布时间: 2022-06-14 05:35:31

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.schele(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 timer定时执行的疑问。

执行开始=记时开始 。。时间间隔。。再执行

❸ java 定时器 timer

很简单的一个程序,两种实现方式,可以弄一个线程在一个while循环里一直跑,一次sleep一分钟,判断当前时间是否是你要的时间,如果是就触发你的任务。
另外一种方法是,直接计划三个任务,到时间它会自己执行:new Timer().schele(task, time);

❹ java timer怎么才配置具体的定时任务去调用方法去执行呢

TimerTask那定义一个变量 private static boolean going = false; 然后修改run方法 public void run() { if (going)return; going = true; //做你的事情 going = false; } 这个可以保证2秒执行一次,如果一次任务超过两秒,下一次执行会在开始就结束。等待两秒后再检查 如果希望前一次任务若超过两秒,后一次直接在前一次执行结束立即开始 可以换用Thread Thread t = new Thread(){ private static boolean going = true; public void run() { while(going){ int start = System.currentTimeMillis(); //做你的事 int cost = System.currentTimeMillis() - start; if (cost < 2000) { try{ sleep(2000 - cost); }catch(Exception ex){} } } } }; t.start();

❺ java语言的Timer的定时问题

Timer只会同时执行一个线程,也就是说,前一个执行时间过长,它会等前一个执行完,再执行下一个。

❻ 用java里timer执行定时任务,怎么写

Timer
timer
=
new
Timer();
timer.schele(new
MyTask(),
firstTime,
24*60*60*1000L);
timer.schele(new
MyTask(),
secondTime,24*60*60*1000L);
timer.schele(new
MyTask(),
ThirdTime,
24*60*60*1000L);
其中三个时间分别为一天的8:00/12:00/14:00点,可以用SimpleDateFormat类

❼ java Timer 定时执行任务

你今天在8点的时候运行了这个程序,并且不退出,明天8点的时候自动就执行了

❽ Java中Timer定时器是怎么实现的

自己开一条线程
new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.currentThread().sleep(1000);

System.out.println("时间增加了!!");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}).start();

❾ java定时器用什么实现

java定时器的使用(Timer)
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
private java.util.Timer timer;
timer = new Timer(true);
timer.schele(
new java.util.TimerTask() { public void run()
{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);
第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参
数是周期的设定,每隔多长时间执行该操作。
使用这几行代码之后,Timer本身会每隔5分钟调用一遍
server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同
步的,多个线程可以共用一个Timer,不需要外部的同步代码。
2、
(1)Timer.schele(TimerTask task,Date time)安排在制定的时间执行指定的
任务。
(2)Timer.schele(TimerTask task,Date firstTime ,long period)安排指定
的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schele(TimerTask task,long delay)安排在指定延迟后执行指定的
任务.
(4)Timer.schele(TimerTask task,long delay,long period)安排指定的任务
从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任务在指定的时间开始进行重复的固定速率执行.
(6)Timer.scheleAtFixedRate(TimerTask task,long delay,long period)安
排指定的任务在指定的延迟后开始进行重复的固定速率执行.
用Java Timer API 进行时间调度开发的相关注意点
java.util这个包中可以找到Timer和TimerTask这两个类。Timer直接从Object
继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者
每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程
在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,
它实现了Runnable接口,因此相当于一个线程。

❿ java 中定时器timer是被什么触发的

java中有个定时任务java.util.TimerTask用法很简单class MyTask extends java.util.TimerTask{@Overridepublic void run() {// 这个任何所执行的代码}}java.util.Timer timer = new Timer(true);//treu就是守护线程MyTask task = new MyTask();//开始执行任务,第一个参数是任务,第二个是延迟时间,第三个是每隔多长时间执行一次timer.schele(task, 0 , 1000 * 60 * 60 * 24);

热点内容
linux驱动开发教程 发布:2024-05-17 17:19:52 浏览:500
抖音中秋节视频脚本 发布:2024-05-17 17:19:51 浏览:193
快递柜为什么用安卓系统 发布:2024-05-17 17:17:18 浏览:906
电脑配置光纤接口怎么标注 发布:2024-05-17 17:06:56 浏览:976
如何用方向键控制安卓机 发布:2024-05-17 16:38:11 浏览:198
雨田系统源码 发布:2024-05-17 16:28:06 浏览:586
新手直播脚本 发布:2024-05-17 16:27:25 浏览:847
python双引号单引号 发布:2024-05-17 16:19:31 浏览:948
0xxc语言 发布:2024-05-17 16:17:40 浏览:700
php与java的区别 发布:2024-05-17 16:12:48 浏览:340