直播系统开发,每日任务定时刷新
直播系统开发,每日任务定时刷新实现的相关代码
1. Timer
Timer是 JDK 自带的定时任务执行类,可以直接使用 Timer来实现定时任务。这种实现方式比较简单,可以指定首次执行的延迟时间、首次执行的具体日期时间,以及执行频率,能满足日常需要。Timer是线程安全的,因为背后是单线程在执行所有任务。Timer是基于绝对时间调度的,而不是基于相对时间,所以它对系统时间的改变非常敏感。
1.1 使用:
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 测试定时任务
*/
public class Test {
public static void main(String[] args) {
// 定义一个任务
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("Run timerTask:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 添加执行任务(延迟 1s 执行,每 2s 执行一次)
timer.schedule(timerTask, 1000, 2000);
}
}
几个重要的方法:
schedule():开始调度任务,提供了几个包装方法;
cancle():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响;
purge():从任务队列中移除所有已取消的任务;
另外,java.util.TimerTask就是实现了 Runnable接口,具体任务逻辑则是在 run()方法里去实现。
public abstract class TimerTask implements Runnable {
// ......
}
执行结果如下:
Run timerTask:Wed Mar 17 10:42:05 CST 2021
Run timerTask:Wed Mar 17 10:42:07 CST 2021
Run timerTask:Wed Mar 17 10:42:09 CST 2021
Run timerTask:Wed Mar 17 10:42:11 CST 2021
Run timerTask:Wed Mar 17 10:42:13 CST 2021
Run timerTask:Wed Mar 17 10:42:15 CST 2021
Run timerTask:Wed Mar 17 10:42:17 CST 2021
Run timerTask:Wed Mar 17 10:42:19 CST 2021
Run timerTask:Wed Mar 17 10:42:21 CST 2021
......
1.2 Timer 缺点分析:
问题 1:任务执行时间长影响其他任务。
开启两个线程,如下:
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
/**
* 测试定时任务
*/
public class Test {
public static void main(String[] args) {
// 定义任务 1
TimerTask timerTask1 = new TimerTask() {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(3);// 休眠 3 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Run timerTask 1:" + new Date());
}
};
// 定义任务 2
TimerTask timerTask2 = new TimerTask() {
@Override
public void run() {
System.out.println("Run timerTask 2:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 添加执行任务(延迟 1s 执行,每 3s 执行一次)
timer.schedule(timerTask1, 1000, 3000);
timer.schedule(timerTask2, 1000, 3000);
}
}
以上就是直播系统开发,每日任务定时刷新实现的相关代码, 更多内容欢迎关注之后的文章