日期:2014-05-20  浏览次数:20690 次

java 定时器问题
我想让一个程序每五秒钟就运行一次 而不管它在这五秒钟内是否运行完一次

timer里的schedule(TimerTask task, 0, 5000) 方法 会一直等待一次执行完毕后才会继续等待5秒钟进行下一次执行

scheduleAtFixedRate(TimerTask task, 0,5000) 只会尽量的保证一个速率 也是等到一次执行完毕后 才能执行下一次

问问各位大神们有没有办法 就是不管他当前本次有没有执行完 5秒一过就立即执行下一次 再5秒又立即一次呢



------解决方案--------------------
5秒启动一个线程,线程启动定时器
------解决方案--------------------
将要运行程序制作成线程,使用一timer,每5s启动一个线程。
------解决方案--------------------
TimerTask 使用Timer 不准确 
建议用quartz.
------解决方案--------------------
可以使用多线程
------解决方案--------------------
一个TimeTask是用一个线程的。任务没法强制终止的。就算TimerTask的cancel也会等当前正在执行的任务执行完后永不执行。
------解决方案--------------------
直接用线程来操作。

(new Thread(new Runnable(){
public void run(){
while(1>0){
//延时的方法有两种,这是第一种。
try{Thread.sleep(5000);}catch(Exception e){}
//这里写要执行的任务
}
}
})).start();
------解决方案--------------------
探讨
我想让一个程序每五秒钟就运行一次 而不管它在这五秒钟内是否运行完一次

timer里的schedule(TimerTask task, 0, 5000) 方法 会一直等待一次执行完毕后才会继续等待5秒钟进行下一次执行

scheduleAtFixedRate(TimerTask task, 0,5000) 只会尽量的保证一个速率 也是等到一次执行完毕后 才能执行下一次

问问各位……

------解决方案--------------------
用多线程是完全可以的 Timer定时起一个线程完全是可以的,