Timer.schedule(new TimerTask(){
public void run() {
               method("man");
               method("women");
}, 0,10*1000);//10秒执行一次public void method(String type){
   。
}我有两个疑问
1. 如果run内执行的程序时间超过10秒,会不会影响到schedule的执行频率,也即schedule只要10秒就重复一次,还是会受到run内部执行时间的影响?
2. 根据问题1,比如method("man")还没执行完,就开始了第二次的schedule,即再次调用method("man");这时会发生什么?会不会和第一次造成冲突

解决方案 »

  1.   

    你就在timer启动时,让计时器暂停,执行完成重新启动计时器。如果计时器不是启动一个新线程的方式去执行是没关系的,如果任务在计时器所在线程,如果任务卡住,计时器也会卡住。
      

  2.   

    schedule(TimerTask task, Date firstTime, long period) 
              安排指定的任务在指定的时间开始进行重复的固定延迟执行。scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 
              安排指定的任务在指定的时间开始进行重复的固定速率执行。 
    scheduleAtFixedRate(TimerTask task, long delay, long period) 
              安排指定的任务在指定的延迟后开始进行重复的固定速率执行。 API上写的很清楚