站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题不用线程,可否实现某个函数定时被调用的功能?

不用线程,可否实现某个函数定时被调用的功能?

摘要: 不用线程,可否实现某个函数定时被调用的功能?


需要注册一些函数,同时每个函数设定一个间隔,每隔这么长间隔就调用一次这个函数。
用线程实现感觉太耗资源,一个函数对应一个线程,函数一多系统就变得很慢。请问有没有不用线程,可以直接实现这种功能的方法?


不用线程恐怕完成不了吧,Timer定时器实际上也是另起动一个线程
不过用一个线程应该能达到你的要求吧,比如说你有三个函数定时执行,定义三个时间(分别代表三个要执行的函数的时间间隔)以及一个计数器:
int t1=1;
int t2=2;
int t3=3;
int n=0;
然后启动线程以后,线程每1000毫秒执行一次,没执行一次,计数器加1,然后判断计数器和上面的三个数是否整除,可以和那个数整除,就执行那个数代表的函数,直到计数器n==t1*t2*t3,三个函数一起执行,同时计数器清零,从头开始记数!
while(true){
n++;
if(n%t1==0){
执行t1代表的函数
}
if(n%t2==0){
执行t2代表的函数
}
if(n%t3==0){
执行t3代表的函数
}
if(n==t1*t2*t3){
同时执行三个函数
n=0;
}
this.sleep(1000);
}


根本就不需要线程,用Timer定时器就行了!java.util.Timer
或者用quartz,参考这个
http://www.blogjava.net/pdw2009/category/13199.html


Timer本身也是使用线程来完成的,
和楼主一样不知道怎么做啊,
等待。。。。。。


必须用线程,就算你不显示调用其实地层也是再调用,Timer


TO:pdw2009

一看兄台就是一个新手, Timer和quartz地层都是线程,和直接调用没什么区别,只是你用这个是别人封装的罢了


你可以自己写一个判断时间的函数~~~~
函数中用Date t=new Date();
然后用时间来确定要隔多久执行一次


↑返回目录
前一篇: 求助:构造函数执行顺序的问题?
后一篇: 使用java开发图形化系统,需要具备哪些条件哪位高人给小弟一点提示吧!!!