package cn.limbo.task.timerTest2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 测试TimerTask类的cancel方法
*/
public class Run2 {
static public class MyTaskA extends TimerTask {
@Override
public void run() {
System.out.println("A运行了! 时间为: " + new Date());
this.cancel();
}
}
static public class MyTaskB extends TimerTask {
@Override
public void run() {
System.out.println("B运行了! 时间为: " + new Date());
}
}
public static void main(String[] args) throws ParseException {
final MyTaskA myTaskA = new MyTaskA();
final MyTaskB myTaskB = new MyTaskB();
final Timer timer = new Timer();
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final String dateString1 = "2017-12-19 10:23:10";
final Date date1 = sdf.parse(dateString1);
System.out.println(" 字符串时间 : " + date1.toLocaleString() + " 当前时间 : " + new Date().toLocaleString());
timer.schedule(myTaskA, date1, 4000);
timer.schedule(myTaskB, date1, 4000);
}
}
/**
* Timer 类中的cancel方法不同
* 注意事项 : cancel方法有时并不会停止任务,而是正常执行
* 有时并不会拿到 queue 锁
*/
class Run3 {
private static Timer timer = new Timer();
static public class MyTaskA extends TimerTask {
@Override
public void run() {
System.out.println("A 运行时间为: " + new Date());
timer.cancel();
System.out.println(" 把任务队列中的全部任务都清空了 , 当前线程停止 ");
}
}
static public class MyTaskB extends TimerTask {
@Override
public void run() {
System.out.println("B 运行时间为: " + new Date());
}
}
public static void main(String[] args) throws ParseException {
final MyTaskA myTaskA = new MyTaskA();
final MyTaskB myTaskB = new MyTaskB();
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final String dateString1 = "2017-12-19 10:23:10";
final Date date1 = sdf.parse(dateString1);
timer.schedule(myTaskA, date1, 2000);
timer.schedule(myTaskB, date1, 2000);
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 01 schedule(TimerTask task, Date firstTime, long period) 的测试
*
*/
public class Run {
static public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println(" 运行时间是: " + new Date());
}
public static void main(String[] args) throws ParseException {
/**
* <B>功能简述</B><br>
*
* 计划时间晚于当前时间 等到时间执行 顺序执行
* 计划时间早于当前时间 立即执行 顺序执行
* 计划时间被耽搁 等到时间执行 顺序执行
*
*/
final MyTask myTask = new MyTask();
final Timer timer = new Timer();
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final String dateString1 = "2017-12-19 10:23:10";
final Date date1 = sdf.parse(dateString1);
System.out.println(" 字符串时间 : " + date1.toLocaleString() + " 当前时间 : " + new Date().toLocaleString());
timer.schedule(myTask, date1, 4000);
}
}
}