Java中TimerTask适用于单线程、低精度定时任务,核心是继承TimerTask重写run()并用Timer调度;但不支持并发、异常会终止线程、无任务管理能力,高要求场景应选ScheduledThreadPoolExecutor或Quartz。
Java中用TimerTask做定时任务,核心就两点:定义任务逻辑、安排执行时机。它轻量简单,适合单线程、精度要求不高的场景,但不支持并发、无法自动恢复、缺乏管理能力——别把它当Quartz用。
TimerTask是个抽象类,必须重写run()方法,里面写你要定时执行的代码:
class MyTask extends TimerTask {
public void run() {
System.out.println("任务执行时间:" + new Date());
}
}
Timer负责启动后台线程、按计划触发任务。注意:一个Timer对应一个任务线程,多个TimerTask共享这个线程:
rTask, long delay, long period):延迟后,每period毫秒执行一次(固定延迟)例如:new Timer().schedule(new MyTask(), 1000, 2000); 表示1秒后开始,之后每2秒执行一次。
如果遇到这些情况,建议换成ScheduledThreadPoolExecutor或第三方框架:
基本上就这些。TimerTask够用但有边界,看清需求再选工具。