首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java中运用线程实现Timer(定时器)原理和源码

2012-12-23 
java中使用线程实现Timer(定时器)原理和源码package timerpublic class Timer {private long interval//

java中使用线程实现Timer(定时器)原理和源码
package timer;

public class Timer {

    private long interval;

    // private boolean enabled;
    private Task task;

    private Clock clock;

    public Timer(long _interval, Task _task) {
        super();
        this.interval = _interval;
        // this.enabled = enabled;
        this.task = _task;

        clock = new Clock();
        clock.start();

        new Thread(new Runnable() {

            public void run() {

                boolean b = true;
               
                while (b) {
                   
                    //System.out.println(clock.getCurrTime());
                   
                    if (interval <= clock.getCurrTime()) {
                       
                        System.out.println(clock.getCurrTime());
                       
                        task.doit();
                        clock.setCurrTime(0);
                       
                        //clock.stop();
                       
                        //System.out.println(clock.getCurrTime());
                       
                        //b = false;
                    }
                }

            }

        }).start();

    }

    public Task getTask() {
        return task;
    }

    public long getInterval() {
        return interval;
    }

    // public boolean isEnabled() {
    // return enabled;
    // }
    // public void setEnabled(boolean enabled) {
    // this.enabled = enabled;
    // }
}
package timer;

public class Clock extends Thread {

    private long oldTime;

    private long currTime;

    public Clock() {
        oldTime = System.currentTimeMillis();
        currTime = 0;
    }

    public long getCurrTime() {
        return currTime;
    }

    @Override
    public void run() {

        while (true) {
            currTime = System.currentTimeMillis() - oldTime;
        }

    }

    public void setCurrTime(long currTime) {
        this.currTime = currTime;
    }

}
package timer;

public interface Task {

    void doit();
}
package timer;

public class NewTask implements Task {

    public void doit() {
        System.out.println( System.currentTimeMillis() );
    }

}
package timer;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Task task = new NewTask();
        Timer t = new Timer(1000,task);
   
    }

}

热点排行