当前位置: 首页 > wzjs >正文

哪些网站是百度新闻源武汉seo搜索优化

哪些网站是百度新闻源,武汉seo搜索优化,电商网站建设培训班,删除wordpress网页无用定时任务在实际开发中有着广泛的用途,本文主要帮助你构建定时任务的知识体系,同时展示Timer 的schedule和scheduleAtFixedRate例子;后续的文章中我们将逐一介绍其它常见的与SpringBoot的集成。 知识准备 需要对定时任务的使用场景和常见的实…

定时任务在实际开发中有着广泛的用途,本文主要帮助你构建定时任务的知识体系,同时展示Timer 的schedule和scheduleAtFixedRate例子;后续的文章中我们将逐一介绍其它常见的与SpringBoot的集成。

知识准备

需要对定时任务的使用场景和常见的实现方式。

什么样的场景会使用定时任务?

比如每天/每周/每月生成日志汇总,定时发送推送信息,定时生成数据表格等

定时任务有哪些实现方式?

首先你需要构建如下实现定时任务的知识体系。在后续的文章中我们将逐一介绍在SpringBoot下的集成。

  • 定时任务基础
    • Cron表达式
    • Linux定时任务工具crontb
  • JDK内置
    • Timer
    • ScheduleExecutorService
  • Netty
    • HashedWheelTimer
  • Spring
    • Spring自带Schedule
    • Spring集成Quartz
  • 分布式集群
    • Quartz持久化JDBC方式
    • Elastic-job
    • xxl-job

Timer实现案例

Timer 的schedule和scheduleAtFixedRate例子如下。

schedule延迟任务

执行定时任务,延迟1秒开始执行。

@SneakyThrows
public static void timer() {// start timerTimer timer = new Timer();timer.schedule(new TimerTask() {public void run() {log.info("timer-task @{}", LocalDateTime.now());}}, 1000);// waiting to process(sleep to mock)Thread.sleep(3000);// stop timertimer.cancel();
}

输出

10:05:47.440 [Timer-0] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-task @2021-10-01T20:05:47.436

schedule周期任务

延迟0.5秒开始执行,每秒执行一次, 10秒后停止。

@SneakyThrows
public static void timerPeriod() {// start timerTimer timer = new Timer();timer.schedule(new TimerTask() {@SneakyThrowspublic void run() {log.info("timer-period-task @{}", LocalDateTime.now());Thread.sleep(100); // 可以设置的执行时间, 来测试当执行时间大于执行周期时任务执行的变化 }}, 500, 1000);// waiting to process(sleep to mock)Thread.sleep(10000);// stop timertimer.cancel();
}

输出

10:05:49.781 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:49.781
10:05:50.781 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:50.781
10:05:51.781 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:51.781
10:05:52.781 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:52.781
10:05:53.782 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:53.782
10:05:54.783 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:54.783
10:05:55.783 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:55.783
10:05:56.784 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:56.784
10:05:57.785 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:57.785
10:05:58.786 [Timer-1] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-period-task @2021-10-01T10:05:58.786

scheduleAtFixedRate

延迟0.5秒开始执行,每秒执行一次, 10秒后停止。

同时测试某次任务执行时间大于周期时间的变化。

@SneakyThrows
public static void timerFixedRate() {// start timerTimer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {int count = 0;@SneakyThrowspublic void run() {if (count++==2) {Thread.sleep(5000); // 某一次执行时间超过了period(执行周期)}log.info("timer-fixedRate-task @{}", LocalDateTime.now());}}, 500, 1000);// waiting to process(sleep to mock)Thread.sleep(10000);// stop timertimer.cancel();
}

输出

10:05:59.781 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:05:59.781
10:06:00.782 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:00.782
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:06.783 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:06.783
10:06:07.781 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:07.781
10:06:08.781 [Timer-2] INFO tech.aizer.springboot.schedule.timer.timertest.TimerTester - timer-fixedRate-task @2021-10-01T10:06:08.781

(你会发现周期执行1秒中执行一次,但是某次执行了5秒,这时候,后续的任务会加快执行进度,一次性就执行了,执行的时间都是10:06:06.783, 所以scheduleAtFixedRate最大的特点是保证了总时间段内的执行次数

进一步理解

我们再通过一些问题来帮助你更深入理解Timer实现方式。

schedule 和 scheduleAtFixedRate 有何区别?

  • schedule:每次执行完当前任务后,然后间隔一个period的时间再执行下一个任务; 当某个任务执行周期大于时间间隔时,依然按照间隔时间执行下个任务,即它保证了任务之间执行的间隔
  • scheduleAtFixedRate:每次执行时间为上一次任务开始起向后推一个period间隔,也就是说下次执行时间相对于上一次任务开始的时间点;按照上述的例子,它保证了总时间段内的任务的执行次数

为什么几乎很少使用Timer这种方式?

Timer底层是使用一个单线来实现多个Timer任务处理的,所有任务都是由同一个线程来调度,所有任务都是串行执行,意味着同一时间只能有一个任务得到执行,而前一个任务的延迟或者异常会影响到之后的任务。

如果有一个定时任务在运行时,产生未处理的异常,那么当前这个线程就会停止,那么所有的定时任务都会停止,受到影响。

PS:在这点上你可以看到,定时任务Job中异常超时等一般都是要自行处理的,以防止对其它任务的影响。

http://www.dtcms.com/wzjs/214238.html

相关文章:

  • 免费拿项目做的网站站内优化包括哪些
  • 新网站怎么做seo 风享郑州seo服务公司
  • 大学网站建设评比考核办法mac923水蜜桃923色号
  • 商丘网吧什么时候恢复营业seo站长平台
  • 百度广州分公司容易进吗北京如何优化搜索引擎
  • 国外b2b的代表平台有哪些seo视频教程我要自学网
  • 北京平面设计公司排名前十强南昌seo建站
  • 做一个旅游团网站怎么做网站如何快速推广
  • 网站建设合同属于什么合同营销型网站内容
  • 高端设计参考网站网站搭建免费
  • 杭州手机建设网站网建
  • 广告公司运作模式优化官网咨询
  • 电话销售企业网站怎么做沪深300指数是什么意思
  • ssp网站怎么做查网站流量查询工具
  • 潍坊哪里有做360网站的百度付费推广有几种方式
  • 手机分销网站建设最新军事新闻 今日 最新消息
  • 免费asp网站后台管理系统武汉seo主管
  • 装饰设计公司网站好的seo平台
  • 微信分销平台排行东莞关键词排名快速优化
  • 湖南省郴州市嘉禾县优化大师tv版
  • 建设网站那个好网推平台有哪些
  • 北京信管局 网站备案seo是什么意思怎么解决
  • 佛山微网站建设东莞网站制作十年乐云seo
  • 无锡网站制作多少钱网站seo去哪个网站找好
  • 网站开发环境是什么安全优化大师
  • 网站快速被收录科学新概念外链平台
  • 东莞企业网站建设女教师网课入侵录屏冫
  • seo网站诊断分析报告磁力蜘蛛
  • 上网建立网站布置关键词可以分为哪三类
  • wordpress app 功能搜索引擎优化的基本方法