java定时器
Ⅰ java 定时器
把打印和写文件放在一个TimerTask子类中
然后通过Timer.scheledAtFixTime()启动这个task
具体参数请参考API
但是我不太明白你指的“定时器只有延时86400000毫秒(24小时)才能实现,”是什么意思
Ⅱ java类中的定时器
quartz中用有状态的任务,他会在重复执行任务前判断上一次是否已完成。
Ⅲ java 定时器问题
用多线程吧。用主线程控制时间,写一个新的线程类执行流程。每次在主线程5000睡眠后就创建新线程对象,新线程对象只执行一次。不过需要注意,如果你在处理相同的数据块,要注意创建的线程对象中的同步
Ⅳ 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 tt=new Timer();//定时类
tt.schele(new TimerTask(){
@Override
public void run() {
System.out.println("一句话");
}
}, 0,4000);//从0秒开始,每隔4秒执行一次
Ⅵ java 定时器 timer
很简单的一个程序,两种实现方式,可以弄一个线程在一个while循环里一直跑,一次sleep一分钟,判断当前时间是否是你要的时间,如果是就触发你的任务。
另外一种方法是,直接计划三个任务,到时间它会自己执行:new Timer().schele(task, time);
Ⅶ java中怎么实现定时功能
这个是我在网上找的不知道是不是你要的:
java定时任务Timer 关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然提到了定时任务,索性在这里一起解决了。设置定时任务很简单,用Timer类就搞定了。一、延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行。代码如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
public static void main(String[] args){ Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解释一下上面的代码。上面的代码实现了这样一个功能,当TimeTask程序启动以后,过一分钟后执行某项任务。很简单吧:先new一个Timer对象,然后调用它的schele方法,这个方法有四个重载的方法,这里我们用其中一个,
public void schele(TimerTask task,long delay)
首先,第一个参数第一个参数就是我们要执行的任务。这是一个TimerTask对象,确切点说是一个实现TimerTask的类的对象,因为TimerTask是个抽象类。上面的代码里 面,Task就是我们自己定义的实现了TimerTask的类,因为是在同一个包里面,所以没有显性的import进来。Task类的代码如下
package test;
import java.util.TimerTask;
public class Task extends TimerTask { public void run()
{
System.out.println("定时任务执行");
}
}
我们的Task必须实现TimerTask的方法run,要执行的任务就在这个run方法里面,这里,我们只让它往控制台打一行字。第二个参数第二个参数是一个long型的值。这是延迟的时间,就是从程序开始以后,再过多少时间来执行定时任务。这个long型的值是毫秒数,所以前面我们的程序里面,过一分钟后执行用的参数值就是 60 * 1000。二、循环执行设置定时任务的时候,往往我们需要重复的执行这样任务,每隔一段时间执行一次,而上面的方法是只执行一次的,这样就用到了schele方法的是另一个重载函数public void schele(TimerTask task,long delay,long period)
前两个参数就不用说什么了,最后一个参数就是间隔的时间,又是个long型的毫秒数(看来java里涉及到时间的,跟这个long是脱不了干系了),比如我们希望上面的任务从第一次执行后,每个一分钟执行一次,第三个参数值赋60 * 1000就ok了。三、指定执行时间既然号称是定时任务,我们肯定希望由我们来指定任务指定的时间,显然上面的方法就不中用了,因为我们不知道程序什么时间开始运行,就没办法确定需要延时多少。没关系,schele四个重载的方法还没用完呢。用下面这个就OK了:
public void schele(TimerTask task,Date time)
比如,我们希望定时任务2006年7月2日0时0分执行,只要给第二个参数传一个时间设置为2006年7月2日0时0分的Date对象就可以了。有一种情况是,可能我们的程序启动的时候,已经是2006年7月3日了,这样的话,程序一启动,定时任务就开始执行了。schele最后一个重载的方法是public void schele(TimerTask task,Date firstTime,long period)
没必要说什么了吧:)四、j2ee中的定时任务在实际的项目中,往往定时任务需要对web工程中的资源进行操作,这样一来,用上面的单个程序的方式可能就有点力不从心了,因为很多web工程的资源它操作不到。解决的办法是,使用Servlet,把执行定时任务的那些代码放到Servlet的init()函数里就可以了,这个easy,就没有必要再写示例代码了吧
Ⅷ java定时器
importjava.io.IOException;
importjava.util.Timer;
publicclassTimerTest{
publicstaticvoidmain(String[]args){
Timertimer=newTimer();
timer.schele(newMyTask(),1000,2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
try{
intch=System.in.read();
if(ch-'c'==0){
timer.cancel();//使用这个方法退出任务
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
staticclassMyTaskextendsjava.util.TimerTask{
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
System.out.println("________");
}
}
}
这段代码基本能满足你需求了 你还有需求就在上面再套一层job 当然如过太复杂了而且这种定时需求很多的话 建议用quartz框架 使用很简单
Ⅸ java 定时器功能
这么干:
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
final TimerTest test = new TimerTest();
Timer timer = new Timer();
timer.schele(new TimerTask() {
@Override
public void run() {
test.method1();
}
}, 0, 60000);
timer.schele(new TimerTask() {
@Override
public void run() {
test.method2();
}
}, 10000, 60000);
timer.schele(new TimerTask() {
@Override
public void run() {
test.method3();
}
}, 30000, 60000);
}
public void method1() {
System.out.println("method1 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 10000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method1 end!");
}
public void method2() {
System.out.println("method2 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 20000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method2 end!");
}
public void method3() {
System.out.println("method3 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 30000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method3 end!");
}
}
Ⅹ Java定时器的几种用法
设定指定任务task在指定时间time执行schele(TimerTasktask,Datetime)
设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
设定指定任务task在指定延迟delay后进行固定频率peroid的执行
安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行