- Timer系统时间向前修改,定时器将被挂起,不再执行,除非时间回到了之前系统时间。
- ScheduledExecutorService不受系统时间变更影响。
- ScheduledExecutorService用法(多个定时任务,用法与Timer雷同):
// 对象申明
private ScheduledExecutorService mScheduledExecutorService = Executors.newScheduledThreadPool
(2);
private ScheduledFuture<?> mScheduledFuture1;
private ScheduledFuture<?> mScheduledFuture2;
// 开启定时器
mScheduledFuture1 = mScheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// do something
}
}, 1000, 1000, TimeUnit.MILLISECONDS);
mScheduledFuture2 = mScheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// do something
}
}, 1000, 1000, TimeUnit.MILLISECONDS);
// 停止定时器
if(!mScheduledFuture1.isCancelled()){
mScheduledFuture1.cancel(true);
}
if(!mScheduledFuture2.isCancelled()){
mScheduledFuture2.cancel(true);
}
// 释放资源
if(!mScheduledExecutorService.isShutdown()){
mScheduledExecutorService.shutdownNow();
}