【Java多线程与并发库】02 传统定时器技术

来源:互联网 发布:wordpress seo插件 编辑:程序博客网 时间:2024/06/05 11:35

【Java多线程与并发库】02 传统定时器技术

定时器和定时器任务的用处:

很简单,通过定时的完成某项任务。

关于定时器,主要是涉及到Timer和TimerTask两个类。

  • Timer表示定时器,其常用的方法是schedule,调度方法。
  • TimerTask表示定时任务,它是一个抽象类,其中包含一个抽象方法run。

传统定时器技术代码演示

单次定时操作

/** * description: * * @author liyazhou * @since 2017-08-13 19:58 */public class TraditionalTimerTest {    public static void main(String... args){        new Timer().schedule(new TimerTask() { // 定时器的调度方法schedule接收一个定时器任务对象,其中的run方法体就是要执行的任务            @Override            public void run() {                System.out.println("execute task!" );            }        }, 5000);  // 单次执行,延迟5s执行    }}

等间隔时间内连环执行

/** * description: * * @author liyazhou * @since 2017-08-13 19:58 */public class TraditionalTimerTest {    public static void main(String... args){        new Timer().schedule(new TimerTask() {            @Override            public void run() {                System.out.println("bombing!" );            }        }, 5000, 1000);  // 等间隔时间内连环执行    }}

时快时慢不断执行定时器任务

/** * description: * * @author liyazhou * @since 2017-08-13 19:58 */public class TraditionalTimerTest {    private static int counter = 0; // 内部类不能声明静态变量    public static void main(String... args){        class MyTimerTask extends TimerTask{            @Override            public void run() {                counter = (counter + 1) %2;                System.out.println("MyTimerTask execute.");                new Timer().schedule(new MyTimerTask(),  // 递归地调用                        2000 * counter); // 每个0s或者2s执行            }        }        new Timer().schedule(new MyTimerTask(), 1000);    }}

参考
《Java多线程与并发库高级应用》

阅读全文
1 0