定时器Timer以及TimerTask

来源:互联网 发布:大学数据新闻比赛 编辑:程序博客网 时间:2024/05/09 19:21
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        }    }}
原创粉丝点击