定时器Timer以及TimerTask

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 {
    //TimerTask中的cancel方法是将自身从任务队列中清除
    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);
        /*字符串时间 : 2017-12-19 10:23:10 当前时间 : 2017-12-19 10:35:27
        A运行了! 时间为: Tue Dec 19 10:35:27 CST 2017
        B运行了! 时间为: Tue Dec 19 10:35:27 CST 2017
        B运行了! 时间为: Tue Dec 19 10:35:31 CST 2017
        B运行了! 时间为: Tue Dec 19 10:35:35 CST 2017
        B运行了! 时间为: Tue Dec 19 10:35:39 CST 2017
        B运行了! 时间为: Tue Dec 19 10:35:43 CST 2017*/
    }
}

/**
 * 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);//循环的间隔 不支持cron
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值