有个任务就是每隔10秒钟读取某个表的数据,然后再拆分读取的数据插入到别的表中。
之前我使用了Timer每个十秒执行一次任务,但是后来莫名其妙的就无法初始化任务类,
然后我干脆用了一个死循环while(true){     A a = new A();
     a.doing();//执行各种逻辑运算     Thread.sleep(10000);//线程睡眠
}上周末我跑了两天没什么问题,请问大侠们,觉得这么个写法有问题吗?

解决方案 »

  1.   

    基本上沒問題,只要要注意一下
    A a = new A(); 如果資源沒釋放完全,記憶體用量會越來越大。
    還有最好有可以離開迴圈的條件,方便當作開關。
      

  2.   

    应该是该关闭的都关闭了,因为毕竟也跑了两天了。我担心java本身就这么一直跑着 不知道行不行。
      

  3.   


    boolean fiag = true;
    while(true){
    if(){
    }
      A a = new A();
      a.doing();//执行各种逻辑运算  Thread.sleep(10000);//线程睡眠
    }
      

  4.   

    boolean fiag = true;
    while(true){
    if(!flag){
      break;
    }
      A a = new A();
      a.doing();//执行各种逻辑运算  Thread.sleep(10000);//线程睡眠
    }然后找个地方改变flag?
      

  5.   

    应该问题不大,前提是处理程序不要有bug。
      

  6.   

    哈哈,楼主太可爱了,竟然跑了两天,呵呵。如果任务每 10 秒执行一次用不着使用这么消耗系统资源的方式,楼主可以去看一下:java.util.concurrent.ScheduledExecutorService 这个接口
      

  7.   

    这些写没问题,原始的健壮。
    a.doing最好再try catch一下。
      

  8.   

    没有问题的, 只要不出现异常线程会一直跑下去。 不过最好设个标志,像4楼说的, 不过最好是:boolean flag = ....;while (flag ) {
    }
    这样就可以控制什么事侯去停掉线程。
      

  9.   

    这种方法要好一些,想停的时候flag=false就行了
      

  10.   

    可以考虑下果大的那个接口。另外我很好奇为什么用Timer会死。
      

  11.   

    还是用timer吧
    死循环肯定是不推荐使用的,Java设计timer出来就是做定时器用的。
      

  12.   

    A a;
    while(true){   a= new A();
      a.doing();//执行各种逻辑运算  Thread.sleep(10000);//线程睡眠
    }按照楼主的方式这样会不会好一点呢?把声明放在外面就不用每次都去声明了。