关于java定时器 区别

public static void main(String[] args) {
//=================================================================第一个
ScheduledExecutorService scheduled=Executors.newSingleThreadScheduledExecutor();
scheduled.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("成功");
}
}, 10, 2, TimeUnit.SECONDS);
//=================================================================第二个

Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("成功");
}
}, 10, 2);
}
//=================问:
这两个定时器除了第一个有三个参数,请问还有其他的不一样吗

(1)schedule方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算
(2)scheduleAtFixedRate方法:“fixed-rate”;如果第一次执行时间被delay了,随后的执行时间按照 上一次开始的 时间点 进行计算,并且为了”catch up”会多次执行任务,TimerTask中的执行体需要考虑同步

通俗的说就是第一种方法,你设置参数是10s中,它肯定会大于10s,因为执行方法是需要时间的。第二种方法,意图保持固定的频率,10s中后会执行第二次,再过十秒一定执行第三次。哪怕方法里面是耗时的,也会在10s后准时执行第二次。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-26
这是个 找不同吗? 除了参数不一样 都一样 完毕