java中使用线程实现Timer(定时器)原理和源码
来源:互联网 发布:域名证书生成器 编辑:程序博客网 时间:2024/06/11 12:02
2007年06月21日 14:44:00
下载源码和示例
1 原理:启动一个线程来刷时间,缺点是不太精确,可能跟线程的优先级有关系。
会有0-10ms的误差。精确到0.1s是没有问题的。
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;
// }
}
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;
}
}
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();
}
public interface Task ...{
void doit();
}
package timer;
public class NewTask implements Task ...{
public void doit() ...{
System.out.println( System.currentTimeMillis() );
}
}
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);
}
}
public class Test ...{
/** *//**
* @param args
*/
public static void main(String[] args) ...{
Task task = new NewTask();
Timer t = new Timer(1000,task);
}
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1660778
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- Java中使用Timer类实现定时器
- .net实现3D饼图
- .net实现3D饼图(源码1)
- .net实现3D饼图(test源码1)
- BigInteger大整数类——实例和源码(相当经典)
- java中数组的讨论:是不是类?
- java中使用线程实现Timer(定时器)原理和源码
- com.qsoft.commons.beanutils源代码(.net版本的org.apache.commons.beanutils)
- 校正srt字幕文件的时间[java源码]
- 网络骗子的特征。大家一定要转载。
- 图片滤镜代码大全
- jsf自定义toolbar组件
- 今天的成果(excel报表):200多倍的生成效率
- jsf自定义组件-jafyear选择年份
- javascript实现多表头分类交叉报表:html表格