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

关于数据完整性,Timer控件
我写的程序是这样,定时从数据库中读取数据,然后再以短信方式发送出去.
程序如下:
  Timer   timer   =   new   Timer();
timer.schedule(new   MyTask(),   1000,   2000);//
启动timer控件,2秒一次.
static   class   MyTask   extends   java.util.TimerTask{
    public   void   run(){
  DB   db1   =new   DB();
String   strSql= "select   *   from   attendance   where   send=1 ";
  ResultSet   rs1=db1.executeQuery(strSql);    
  while(rs1.next()){
      .......;//数据处理
update   set   send=2   where   (当前处理的这一条数据)
}
}
}
请问一下,两秒过后这些数据还没有处理完成,请问会不会再启动一个MyTask   ;
会不会造成对同一次据进行两次操作;

------解决方案--------------------
不会的。Timer 会尽力在要求的时间间隔内完成。完不成它也不会重复执行。
但是,如果使用timer.scheduleAtFixedRate的话,就不一样了。。。。