前记
上一篇温习的是java中线程的创建,这次来温习java中传统定时器Timer的使用,现在除了传统的定时器,我们在框架中经常用的定时器框架有quartz等。
代码
package com.thread.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/*********************************************************************************
//* Copyright (C) 2015 Pingan Haoche (PAHAOCHE). All Rights Reserved.
//*
//* Filename: TraditionalTimerTest.java
//* Revision: 1.0
//* Author: <gao yunqi>
//* Created On: 2016年2月18日
//* Modified by:
//* Modified On:
//*
//* Description: <传统定时器>
/********************************************************************************/
public class TraditionalTimerTest {
private static int count = 0;
/**
* @param args
*/
public static void main(String[] args) {
/*new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("定时启动");
}
}, 1000,5000);//第一次1秒之后启动,之后每5秒启动一次
class FirstTimerTask extends TimerTask{
@Override
public void run() {
count++;
if(count%2==0){
System.out.println("2秒定时启动");
new Timer().schedule(new FirstTimerTask(), 4000);
}else{
System.out.println("4秒定时启动");
new Timer().schedule(new FirstTimerTask(), 2000);
}
}
}
//第一次2秒之后启动,第二次4秒之后启动,之后依次交替启动
new Timer().schedule(new FirstTimerTask() , 2000);
*/
//第一次2秒之后启动,第二次4秒之后启动,之后依次交替启动
new Timer().schedule(new FirstTimerTask() , 2000);
while(true){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(new Date()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class FirstTimerTask extends TimerTask{
@Override
public void run() {
System.out.println("2秒定时启动");
new Timer().schedule(new SecondTimerTask(), 4000);
}
}
class SecondTimerTask extends TimerTask{
@Override
public void run() {
System.out.println("4秒定时启动");
new Timer().schedule(new FirstTimerTask(), 2000);
}
}
代码说明:
上述代码是利用传统定时器实现一个2秒的定时器和4秒的定时器交替执行的功能。
其中注释部分是一种实现方式,未注释的是另外一种实现方式。