一个对时间精度要求特别高的循环任务,比如只要求每几百毫秒或者几秒运行一次这种,但要求稳定性比较高,编码尽量简单,可以随时暂停,取消什么的,用TimerTask还是自己写Thread更容易呢?请不要说没什么不同,我只想知道,哪种"更"容易.我个人感觉写thread好像麻烦些,要写好多for和if,而且满容易出异常的.

解决方案 »

  1.   

    用swing里的Timer更容易
    Timer t =new Timer(delay,new ActionListener(){
                         public void performent(){
                             //task;
                         }
                     });
    t.start();
      

  2.   

    不要用Timertimer主张操作简单而且不重要的任务Timer实际上是两个Thread,一个是TimerQueue,它的作用只是没1毫秒notify一下,通知到时间的Timer去工作,而Timer里又有一个Thread用来发消息通知。这样看,它的准确度不会比Thread高
    更主要的是,Timer所使用的TimerQueue是一个单实例,也就是说一个app里面就有一个Thread用来唤醒其他的Timer。这样安全性就很低了。
    用if ,for虽然复杂,但能够解决你所说的“要求特别高的循环任务”。
      

  3.   

    都是Thread呀后台任务使用Quartz是最好的选择,最好和Spring集成
      

  4.   

    http://community.csdn.net/Expert/topic/5231/5231297.xml?temp=.6654474这个里面说到情况我也遇到过
    你看这个里面我的那个代码测试一下就知道了Timer不是很可靠,至少有些奇怪。而且整个app只有一个TimerQueue在做notify的事情比较不放心。而准确度上绝对不会比自己写的Thread效率高。
      

  5.   

    我抱歉一下,主贴里“对时间精度要求特别高”应该是 “对时间精度要求  不   特别高”
    只要每隔一阵子能触发一次就行。
    还想问一下: Timer实际上是两个Thread,一个是TimerQueue,Timer所使用的TimerQueue是一个单实例那么每个TimerTask实例对应的一个单独的thread,还是app里唯一的一个thread如果我启动了多个TimerTask,那么有没有可能是启动了多个thread在跑呢?还是这N多个TimerTask都是由一个Thread调度的,当某个TimerTask实例里运行比较耗时的工作,其他TimerTask实例就只能等待?
      

  6.   

    同意fool_leave对Timer的看法。
    但我还是要用Timer,简单易用。