java.util.timer_利用 java.util.Timer来写一个定时器

java.util.Timer中的TimerTask类

这个包java.util.Timer是Java中的一个实用工具类,用来调度将来某个时间执行的线程。

TimerTask类的源码:

public abstract class TimerTask implements Runnable {

final Object lock = new Object();

int state = VIRGIN;

static final int VIRGIN = 0;

static final int SCHEDULED = 1;

static final int EXECUTED = 2;

static final int CANCELLED = 3;

long nextExecutionTime;

long period = 0;

protected TimerTask() {

}

public abstract void run();

public boolean cancel() {

synchronized(lock) {

boolean result = (state == SCHEDULED);

state = CANCELLED;

return result;

}

}

public long scheduledExecutionTime() {

synchronized(lock) {

return (period < 0 ? nextExecutionTime + period

: nextExecutionTime - period);

}

}

}

TimerTask是实现了Runnable接口的,使用时是使用的Timer类,Java Timer类是线程安全的,多个线程可以共享一个Timer对象,而无需外部同步。使用时需要创建一个Timer对象。

使用实例:

importjava.util.Timer;importjava.util.TimerTask;public class Test extendsTimerTask {private String name = "";publicTest(String name) {this.name =name;

}

@Overridepublic voidrun() {

System.out.println("execute:" +name);

}public static voidmain(String[] args) {

Timer timer= newTimer();long delay1 = 1 * 1000;long period1 = 1000;//从现在开始 1 秒钟之后,每隔 1 秒钟执行一次 job1

timer.schedule(new Test("test.."), delay1, period1);long delay2 = 2 * 1000;long period2 = 2000;//从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 job2

timer.schedule(new Test("testResult.."), delay2, period2);

}

}

输出结果:

5b81fab65f1999279c06129829045349.png

Timer类包含几个schedule()方法,用于安排任务在给定时间或延迟一段时间后运行一次:

public void schedule(TimerTask task, long delay, long period) {

if (delay < 0)

throw new IllegalArgumentException("Negative delay.");

if (period <= 0)

throw new IllegalArgumentException("Non-positive period.");

sched(task, System.currentTimeMillis()+delay, -period);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值