- 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。
- 第一种方式采用 变量,
- 第二种方式创建两个TimerTask
package com.victor.thread;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 线程学习第二篇 传统定时器
*
* 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。
* 第一种方式采用 变量,
* @author Victor
*/
public class LearnTraditionalThread_002 {
private static int count = 0;
static class MyTimerTask extends TimerTask{
@Override
public void run() {
count = (count+1)%2;
System.out.println("bombing!!!");
new Timer().schedule(new MyTimerTask(), 2000+2000*count);
}
}
public static void main(String[] args) {
new Timer().schedule(new MyTimerTask(), 2000);
while (true) {
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.victor.thread;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 线程学习第二篇 传统定时器
* 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。
* 第二种方式创建两个TimerTask
* @author Victor
*/
public class LearnTraditionalThread_003 {
static class MyTimerTask2 extends TimerTask{
@Override
public void run() {
System.out.println("bombing!!!");
new Timer().schedule(new MyTimerTask3(), 2000);
}
}
static class MyTimerTask3 extends TimerTask{
@Override
public void run() {
System.out.println("bombing!!!");
new Timer().schedule(new MyTimerTask2(), 4000);
}
}
public static void main(String[] args) {
new Timer().schedule(new MyTimerTask3(), 2000);
while (true) {
System.out.println(new Date().getSeconds());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}