关键语法:new Timer().schedule(TimerTask task, long delay)
1.设置一个定时器,两秒执行一次
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("bombing!");
}
}, 2000);
2.如何每隔2s、4s交替执行
- 定义两个定时器,执行时间分别为2秒和4秒,两个定时器相互调用,即可实现
/**
* 2秒执行的定时器
*/
static class MyTimer2 extends TimerTask {
static int count = 0;
@Override
public void run() {
count = (count + 1) % 2;
System.out.println("second bombing!");
new Timer().schedule(new MyTimer4(), 2000);
}
}
/**
* 4秒执行的定时器
*/
static class MyTimer4 extends TimerTask {
static int count = 0;
@Override
public void run() {
count = (count + 1) % 2;
System.out.println("second bombing!");
new Timer().schedule(new MyTimer2(), 4000);
}
}
public static void main(String[] args) {
new Timer().schedule(new MyTimer4(), 2000);
while (true) {
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
2. 2s和4s间歇性执行有一个特点,基数执行2s的,偶数执行4s的,可以利用静态变量实现此功能
static class MyTimer extends TimerTask {
//静态变量:统计该执行那个定时器,基数:2s 偶数:4
static int count = 0;
@Override
public void run() {
count = (count + 1) % 2;//获得基偶数
System.out.println("second bombing!");
new Timer().schedule(new MyTimer(), 2000+2000*count);//2s,4s交替时间
}
}
public static void main(String[] args) {
new Timer().schedule(new MyTimer(), 2000);
while (true) {
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
执行结果与方法1一致
//quartz 目前spring中常用的定时器,可以指定到年月日,时分秒的执行,有兴趣的可以去看一下