您的位置:

java定时器,java定时器任务是否会延迟执行

本文目录一览:

java定时器用什么实现

java定时器的使用(Timer)

1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。

对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。

private java.util.Timer timer;

timer = new Timer(true);

timer.schedule(

new java.util.TimerTask() { public void run()

{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);

第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参

数是周期的设定,每隔多长时间执行该操作。

使用这几行代码之后,Timer本身会每隔5分钟调用一遍

server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同

步的,多个线程可以共用一个Timer,不需要外部的同步代码。

2、

(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的

任务。

(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定

的任务在指定的时间开始进行重复的固定延迟执行.

(3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的

任务.

(4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任务

从指定的延迟后开始进行重复的固定延迟执行.

(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行.

(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安

排指定的任务在指定的延迟后开始进行重复的固定速率执行.

用Java Timer API 进行时间调度开发的相关注意点

java.util这个包中可以找到Timer和TimerTask这两个类。Timer直接从Object

继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者

每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程

在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,

它实现了Runnable接口,因此相当于一个线程。

java Timer定时器停止该怎么办?

private void closeTimer() {\x0d\x0aif (timerTask != null) {\x0d\x0atimerTask.cancel();\x0d\x0atimerTask = null;\x0d\x0a}\x0d\x0aif (mTimer != null) {\x0d\x0amTimer.cancel();\x0d\x0amTimer = null;\x0d\x0a}\x0d\x0a}\x0d\x0a/**\x0d\x0a* 计时操作 改变界面的倒计时信息\x0d\x0a*/\x0d\x0aprivate void timerOperation() {\x0d\x0arecLen = RECENT_SECOND;\x0d\x0amTimer = new Timer();\x0d\x0atimerTask = new TimerTask() {\x0d\x0a\x0d\x0a@Override\x0d\x0apublic void run() {\x0d\x0a// TODO Auto-generated method stub\x0d\x0arecLen--;\x0d\x0aif (recLen = 0) {\x0d\x0aMessage msg = new Message();\x0d\x0amsg.what = SECOND_UPDATE;\x0d\x0amsg.arg1 = recLen;\x0d\x0ahandler.sendMessage(msg);\x0d\x0a}\x0d\x0a}\x0d\x0a};\x0d\x0amTimer.schedule(timerTask, PROGRESS_DELAY, PROGRESS_PERIOD);\x0d\x0a}

有关Java定时器的问题

这样改:

public class Test extends java.util.TimerTask{

public int i=0 ;

public static void main(String[] args) {

final Timer t = new Timer();

t.schedule(new Test(),1000,2000);

}

public void run() {

System.out.println("sss");

i++;

System.out.println(i);

if(i == 3)

cancel();

}

}

java定时器

import java.io.IOException;

import java.util.Timer;

public class TimerTest {

public static void main(String[] args) {

Timer timer = new Timer();

timer.schedule(new MyTask(), 1000, 2000);// 在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.

while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了

try {

int ch = System.in.read();

if (ch - 'c' == 0) {

timer.cancel();// 使用这个方法退出任务

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

static class MyTask extends java.util.TimerTask {

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("________");

}

}

}

这段代码基本能满足你需求了 你还有需求就在上面再套一层job 当然如过太复杂了而且这种定时需求很多的话 建议用quartz框架 使用很简单

java定时器怎么停止

1、scheduleUpdate

加入当前节点后,程序会每帧都会自动执行一次默认的Update函数。(注:一定是Update函数哦,若想调用其他自己命名的函数则使用schedule)

看例子,走起。

首先在HelloWord类的头文件中声明Update函数:

[cpp] view plain copy print?

void update(float dt); //注意参数类型

然后在HelloWorld类源文件中实现函数Update:

[cpp] view plain copy print?

void HelloWorld::update(float dt)

{

CCLOG("baibai");

}

现在我们可以调用了,在需要他不断执行的地方加入调用的代码就ok:

[cpp] view plain copy print?

this-scheduleUpdate(); //this是当前节点,如layer,所以可以省略啦。

运行之后你将会看到不断有baibai被打印出来

2、scheduleUpdate

可以没隔几秒执行某个自定义的函数,来看代码:

首先还是在HelloWorld中声明所要执行的函数:

java定时器会空转吗

不会。

1、可以采用睡眠,sleep(),比较low。

2、在java类库中已经写好了定时器,java.util.Timer。可以拿来用,用的少,很多高级框架都是支持定时任务的。