直播系统开发,每日任务定时刷新

直播系统开发,每日任务定时刷新实现的相关代码

1. Timer

Timer是 JDK 自带的定时任务执行类,可以直接使用 Timer来实现定时任务。这种实现方式比较简单,可以指定首次执行的延迟时间、首次执行的具体日期时间,以及执行频率,能满足日常需要。Timer是线程安全的,因为背后是单线程在执行所有任务。Timer是基于绝对时间调度的,而不是基于相对时间,所以它对系统时间的改变非常敏感。

1.1 使用:

 

1
import java.util.Date;<br>import java.util.Timer;<br>import java.util.TimerTask;<br>/**<br> * 测试定时任务<br> */<br>public class Test {<br>    public static void main(String[] args) {<br>        // 定义一个任务<br>        TimerTask timerTask = new TimerTask() {<br>            @Override<br>            public void run() {<br>                System.out.println("Run timerTask:" + new Date());<br>            }<br>        };<br>        // 计时器<br>        Timer timer = new Timer();<br>        // 添加执行任务(延迟 1s 执行,每 2s 执行一次)<br>        timer.schedule(timerTask, 1000, 2000);<br>    }<br>}

​几个重要的方法:

schedule():开始调度任务,提供了几个包装方法;

cancle():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响;

purge():从任务队列中移除所有已取消的任务;

另外,java.util.TimerTask就是实现了 Runnable接口,具体任务逻辑则是在 run()方法里去实现。

 

1
public abstract class TimerTask implements Runnable {<br>// ......<br>}

执行结果如下:

 

1
Run timerTask:Wed Mar 17 10:42:05 CST 2021<br>Run timerTask:Wed Mar 17 10:42:07 CST 2021<br>Run timerTask:Wed Mar 17 10:42:09 CST 2021<br>Run timerTask:Wed Mar 17 10:42:11 CST 2021<br>Run timerTask:Wed Mar 17 10:42:13 CST 2021<br>Run timerTask:Wed Mar 17 10:42:15 CST 2021<br>Run timerTask:Wed Mar 17 10:42:17 CST 2021<br>Run timerTask:Wed Mar 17 10:42:19 CST 2021<br>Run timerTask:Wed Mar 17 10:42:21 CST 2021<br>......

1.2 Timer 缺点分析:

问题 1:任务执行时间长影响其他任务。

开启两个线程,如下:

 

1
<br>import java.util.Date;<br>import java.util.Timer;<br>import java.util.TimerTask;<br>import java.util.concurrent.TimeUnit;<br>/**<br> * 测试定时任务<br> */<br>public class Test {<br>    public static void main(String[] args) {<br>        // 定义任务 1<br>        TimerTask timerTask1 = new TimerTask() {<br>            @Override<br>            public void run() {<br>                try {<br>                    TimeUnit.SECONDS.sleep(3);// 休眠 3 秒<br>                } catch (InterruptedException e) {<br>                    e.printStackTrace();<br>                }<br>                System.out.println("Run timerTask 1:" + new Date());<br>            }<br>        };<br>        // 定义任务 2<br>        TimerTask timerTask2 = new TimerTask() {<br>            @Override<br>            public void run() {<br>                System.out.println("Run timerTask 2:" + new Date());<br>            }<br>        };<br>        // 计时器<br>        Timer timer = new Timer();<br>        // 添加执行任务(延迟 1s 执行,每 3s 执行一次)<br>        timer.schedule(timerTask1, 1000, 3000);<br>        timer.schedule(timerTask2, 1000, 3000);<br>    }<br>}

 

以上就是直播系统开发,每日任务定时刷新实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(59)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示