完成的需求是:开始的时候延迟3秒调用timerTask,之后是每过20秒调用一次.
但是在延迟3秒调用的时候,innerTimer会被切换调用,开始时1秒调用1次,之后外部的20秒满足后就会将内部的切换为10秒调用一次
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class SwitchTimerTaskTest {
static int count = 0;
public static void main(String[] args) throws InterruptedException {
final Timer timer = new Timer();
TimerTask timerTask = new TimerTask(){
Timer innerTimer = new Timer();
TimerTask innerTask = null;
@Override
public void run() {
initiInnerTask();
innerTimer.schedule(innerTask,0,1000 + count * 9000);
switchMod();
}
private void initiInnerTask() {
if(innerTask == null){
innerTask = new TimerTask(){
@Override
public void run() {
System.out.println("i like zongzi!");
}
};
}
else
{
innerTask.cancel();
innerTask = null;
innerTask = new TimerTask(){
@Override
public void run() {
System.out.println("i like zongzi!");
}
};
}
}
private void switchMod() {
count = ++count % 2;
}
};
timer.schedule(timerTask, 3000,20000);
}
}