定时器的简单实现

import java.util.concurrent.TimeUnit;

public class SimpleTimer {
    interface SimpleTimerTask { //接口一个
        void run();
    }
 //定义一个类继承接口
 static class MyTask implements SimpleTimerTask {//重写接口的run,让他显示个10秒之后
        @Override
        public void run() {
            System.out.println("10 秒之后");
        }
    }



 //线程类,其中属性有时间长度,和一个显示“10秒后"的类的对象
    static class Worker extends Thread {
        long delay;
        SimpleTimerTask task;

        Worker(SimpleTimerTask task, long delay) {
            this.task = task;
            this.delay = delay;
        }

        @Override
        public void run() { //线程的运行方式,等delay秒,再让“10秒”的对象启动
            try {
                Thread.sleep(delay);
                task.run();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
// SimpleTimer的方法,new一个线程,传入一个接口类的对象和时间。
    void schedule(SimpleTimerTask task, long delay) {
        Worker worker = new Worker(task, delay);
        worker.start();
    }

   

    public static void main(String[] args) throws InterruptedException {
        SimpleTimer timer = new SimpleTimer();//new一个大类对象用来调方法
        MyTask task = new MyTask();//new一个会显示十秒后的对象
        timer.schedule(task, 10 * 1000);//调方法,让上边的对象真的在十秒后显示十秒后。

        int i = 0;
        while (true) {
            System.out.println(i++);
            TimeUnit.SECONDS.sleep(1); //一秒显示一次i
        }
    }
}

发布了15 篇原创文章 · 获赞 0 · 访问量 259

猜你喜欢

转载自blog.csdn.net/rushrush1/article/details/104882194