功能设计
设计一个定时执行的多线程任务,具有两种功能:
- 固定时间点运行任务
- 以固定时间为周期运行任务
JAVA实现
简单版实现:Timer定时器
利用JAVA自带的Timer
类定时器,它可以设置计划任务,也就i是在指定的时间开始执行某一个任务。它使用TimerTask
来封装任务。
实例
package timer.example;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) throws InterruptedException {
MyTask task = new MyTask();
Timer timer = new Timer();
System.out.println("当前时间:" + new Date().toLocaleString());
// 调度一个Task,当前时间1秒后,每两秒执行一次
timer.schedule(task, 1000,2000);
Thread.sleep(10000);
task.cancel(); // 取消当前的任务,这样开始每两秒运行一次的task就停止了
System.out.println("=========================");
Calendar now = Calendar.getInstance();// 获取当前时间
now.set(Calendar.SECOND, now.get(Calendar.SECOND)+3);
Date runDate = now.getTime();
MyTask2 task2 = new MyTask2();
timer.scheduleAtFixedRate(task2, runDate, 3000);
// 固定速率,这里是指从runDate(前面定义的当前时间后3秒钟)开始执行每3秒执行一次,实际运行间隔取线程进行时间和定义间隔间最长者
Thread