Java SE定时任务
CAMELLIA定时任务
一、Timer
和 TimerTask
1.1 Timer
和 TimerTask
的基本概念
- **
Timer
**:用于安排和管理定时任务的类。它可以调度任务在将来的某个时间点执行,或者周期性地执行。
- **
TimerTask
**:一个抽象类,表示一个可以被 Timer
调度的任务。需要继承这个类并实现 run()
方法来定义任务的具体内容。
1.2 实现步骤
- 创建一个
Timer
实例。
- 创建一个继承自
TimerTask
的任务类,并实现其 run()
方法。
- 使用
Timer
实例安排任务的执行时间和周期。
1.3 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask;
public class ScheduledTasksTest { public static void main(String[] args) throws ParseException { Timer timer = new Timer(true); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date firstDate = sdf.parse("2024-06-23 09:05:00"); timer.schedule(new LogTimeTask(), firstDate, 1000); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } }
public class LogTimeTask extends TimerTask { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); int count = 0; @Override public void run() { Date now = new Date(); String strTime = sdf.format(now); System.out.println(strTime+":"+(count++)); } }
|
1.4 其他定时任务方法
除了 schedule(TimerTask task, Date time, long period)
,Timer
还有其他一些常用的调度方法:
schedule(TimerTask task, Date time)
:在指定的时间执行一次任务。
schedule(TimerTask task, long delay)
:在指定的延迟后执行一次任务。
scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
:在指定的时间开始,按照固定的时间间隔执行任务。
scheduleAtFixedRate(TimerTask task, long delay, long period)
:在指定的延迟后开始,按照固定的时间间隔执行任务。