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

解决方案 »

  1.   

    不用线程恐怕完成不了吧,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);
    }
      

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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