多线程学习第二篇之传统定时器

来源:互联网 发布:java与模式 云盘 编辑:程序博客网 时间:2024/05/16 06:27
  • 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。
  • 第一种方式采用 变量,
  • 第二种方式创建两个TimerTask
package com.victor.thread;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * 线程学习第二篇 传统定时器 *  * 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。 * 第一种方式采用 变量, * @author Victor */public class LearnTraditionalThread_002 {    private static int count = 0;    static class MyTimerTask extends TimerTask{        @Override        public void run() {            count = (count+1)%2;            System.out.println("bombing!!!");            new Timer().schedule(new MyTimerTask(), 2000+2000*count);        }    }    public static void main(String[] args) {        new Timer().schedule(new MyTimerTask(), 2000);        while (true) {            System.out.println(new Date().getSeconds());            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}
package com.victor.thread;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * 线程学习第二篇 传统定时器 * 实现这样一个例子,先2秒打印一次,再4秒打印一次,循环往复执行。 * 第二种方式创建两个TimerTask * @author Victor */public class LearnTraditionalThread_003 {    static class MyTimerTask2 extends TimerTask{        @Override        public void run() {            System.out.println("bombing!!!");            new Timer().schedule(new MyTimerTask3(), 2000);        }    }    static class MyTimerTask3 extends TimerTask{        @Override        public void run() {            System.out.println("bombing!!!");            new Timer().schedule(new MyTimerTask2(), 4000);        }    }    public static void main(String[] args) {        new Timer().schedule(new MyTimerTask3(), 2000);        while (true) {            System.out.println(new Date().getSeconds());            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}