① 如何正确的使用Timer的schele方法
在java中,Timer类主要用于定时性、周期性任务
的触发,这个类中有两个方法比较难理解,那就是schele和scheleAtFixedRate方法,在这里就用实例分析一下
(1)schele方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间按
② java timer 用法
import java.util.Timer;
public class TimerTest1 {
static class MyTask extends java.util.TimerTask {
public void run() {
System.out.println("开始");
}
}
static class Shutdown extends java.util.TimerTask {
Timer timer = null;
public Shutdown() {
}
public Shutdown(Timer mytimer) {
timer = mytimer;
}
public void run() {
System.out.println("结束");
timer.cancel();// 使用这个方法退出任务
}
}
public static void main(String[] args) {
Timer timer = new Timer();
timer.schele(new MyTask(), 1000);// 在1秒后执行此任务
timer.schele(new Shutdown(timer), 3000);// 在3秒后执行此任务
}
}
③ java timer使用方法
Timer都是跟TimerTask两个类结合一块使用的,Timer中最重要的就是schele方法,下面这个历史是利用Timer跟TimerTask循环执行打印语句哈。其他schele方法的使用请参考api,里面写的很详细的。
public class TimerTest3 {
public static void main(String[] args) {
Timer t = new Timer();
t.schele(new TimerTask(){
@Override
public void run() {
System.out.println(System.currentTimeMillis());
}
}, 100l, 1000l);//100表示第一次执行时要延迟多少毫秒,1000表示每个一秒执行打印语句。
}
}
④ java timer wait函数怎么用
Timer 是一种定时器工具,用来在一个后台线程计划执行指定任务,这些任务可以被执行一次,也可以被定期执行。每个 Timer 对象对应一个后台线程,顺序地执行所有计时器任务。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程,从而可能延迟后续任务的执 行。对 Timer 对象最后的引用完成并且所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。TimerTask是一个抽象类, 实现了Runable接口,它的子类代表一个可以被Timer计划的任务。
1) 一个简单的Demo,让大家对Timer、TimerTask的使用有感性的认识。
2) Timer和TimerTask的常用api函数说明
这里强调Timer类的schele和scheleAtFixedRate的区别。schele和 scheleAtFixedRate的区别在于,schele以固定的相对时间间隔执行,如果某一次执行被延时了,往后的执行的执行时间也会相对 延时;而scheleAtFixedRate是以绝对的时间间隔执行,如果某一次执行被延时,它的后一次执行的延时将会缩短 (scheleAtFixedRate会把已经过去的时间也作为周期执行)。schele注重的是时间间隔的稳定,而 scheleAtFixedRate注重的是执行频率的稳定。
3) Timer的终止
默认情况下,只要一个程序的timer线程在运行,那么这个程序就会保持运行。当然,你可以通过以下四种方法终止一个timer线程:
a)调用timer的cancle方法。你可以从程序的任何地方调用此方法,甚至在一个timer task的run方法里;
b)让timer线程成为一个daemon线程(可以在创建timer时使用new Timer(true)达到这个目地),这样当程序只有daemon线程的时候,它就会自动终止运行;
c)当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置成null),这样timer线程也会终止;
d)调用System.exit方法,使整个程序(所有线程)终止。
总结:Timer和TimerTask可以简单理解为Timer定时器在触发TimerTask任务调用,通常用schele和 scheleAtFixedRate方法来调用timertask任务,cancle来终止任务调用。Timer简单易用,比较适合提供轻量级的计时 器功能,但是对时效性很强的任务调度请用其它方法来实现(正如javadoc所述”Timer does not offer real-time guarantees: it scheles tasks using the Object.wait(long) method”)。
⑤ JAVA TIMER怎么样使用
void cancel()
终止此计时器,丢弃所有当前已安排的任务。
int purge()
从此计时器的任务队列中移除所有已取消的任务。
void schele(TimerTask task, Date time)
安排在指定的时间执行指定的任务。
void schele(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void schele(TimerTask task, long delay)
安排在指定延迟后执行指定的任务。
void schele(TimerTask task, long delay, long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
void scheleAtFixedRate(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定速率执行。
void scheleAtFixedRate(TimerTask task, long delay, long period)
安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
我前几天刚用过 这是我的代码:
timer.scheleAtFixedRate(new TimerTask(), ConfigUtil.TIME_DELAY, Integer.parseInt(distance)*60000);
三个解释:new TimerTask()这是一个TimerTask对象,里面有一个run()方法
是你想要执行的代码。
ConfigUtil.TIME_DELAY这个是延迟的时间 (毫秒单位)
Integer.parseInt(distance)*60000 这个是每隔多长时间执行一次
TimerTask中的run()方法(毫秒单位)
简单一点就是 写成这样:
Timer timer = new Timer();
timer.scheleAtFixedRate(new TimerTask(), 1000, 60000);
意思就是 每隔6秒(相当于60000毫秒)的时间 在经过1秒的延迟,执行一次
TimerTask中的方法。new TimerTask()就是写一个类 然后继承TimerTask,然后重写其中的run()方法,在run()中放入自己想要执行的代码。
够清楚了吧?
⑥ 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中Timerr如何使用
//是Timer计时器吧,
//创建对象
Timer time = new Timer();
//计时器重复任务对象
TimerTask task = new TimerTask() {
/**
* 实现计时器对象的接口方法
*/
@Override
public void run() {
//这里需要重复运行的代码快
}
};
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
time.schele(task, 300, 300);
这是重复的一个计时器用法,其他的可以直接查看jdk文档帮助.
⑧ java timer使用方法
public class test{ public static void main(String[] a){ Timer timer = new Timer(); Timmer timmer=new Timmer(); timer.schele(timmer, 6000,6000); for(int i=0;i<100;i++){ VelocityMailSupport.saveE("大喊"+i); System.out.println(i+"次"); } } } class Timmer extends TimerTask{ public void run() { System.out.prinltn("go"); } } }一个列子说明一切。。剩下的Aip简单明了
⑨ java 中 如何使用Timer
现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。
用法很简单,new一个timer,然后写一个timertask的子类即可。
package comz.autoupdatefile;
import java.util.Timer;
import java.util.TimerTask;
public class M {
public static void main(String[] args) {
// TODO todo.generated by zoer
Timer timer = new Timer();
timer.schele(new MyTask(), 1000, 2000);
}
}
class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("dddd");
}
}
这样,就可以在1秒钟之后开始执行mytask,每两秒钟执行一次。
当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过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类