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

网站开发成本包括/windows优化大师提供的

网站开发成本包括,windows优化大师提供的,网页设计实验报告用什么格式,wordpress清理工具前段时间做一个springMVC项目,有一个功能是要定时拉取数据。做法就是启动一个定时器,定时这行。java有自带的定时器,不过在springMVC中不好集成,而且由于使用springMVC,很多都是注解,写起来效率…

前段时间做一个springMVC项目,有一个功能是要定时拉取数据。做法就是启动一个定时器,定时这行。java有自带的定时器,不过在springMVC中不好集成,而且由于使用springMVC,很

多都是注解,写起来效率较高。当然quart定时器很好用,而且功能强大。自己想偷懒,找到spring 自带了一个轻量级的定时器spring schedule,使用注解一行代码就能实现。代码是这样的:

在spring 注解中加一行,代表支持这个定时器的注解使用,然后再定时器类中的方法上加一行@Scheduled(cron = "0 55 23 * * ?") 注解,当然这个类必须加

入spring组件里面。很容易,一个定时器就实现了,而且修改也很容易,变更cron表达式就好。

由于功能的增加,需要定时器的地方有好几个,自己什么也没想,把原先的方法照搬过来,也不会想到会出什么问题。那天发布项目测试的时候,突然发现该运行的内容没有,关键是日志也

没报错。这种问题不知道原因,都不好去解决。只能回到项目,一个一个打日志,调试。后面发现定时器也不是全部没启动,启动了一个。后面发现如果就只是一个定时器,运行没问题,难道这

个只支持一个定时器?我举得不太可能,写个代码测试一下,发现几个是没问题。后面觉得有可能这个定时器是阻塞的,就是同时只能执行一个任务,果不然,项目中的几个任务是需要一直运行

的,就是说要占几个线程。开始想去看sprng schedule的源码,感觉里面类之间牵涉太多了。就先看了java自带的定时器的源码,发现两个在那个问题的处理上很相似,看了一下

java.util.timer,它的核心执行代码,其实就是一个线程在一直轮询扫描各个定时器,既然是一个线程,那么肯定是阻塞的。下面做一下简要的分析。

核心有三个类,Timer,TimeTask ,其中Timer中又包括两个重要的类TaskQueue,TimerThread.类图如下(只介绍主体功能)

4677378.html

4677378.html

a254e9b7b1ec0891220c1a2fb3b26e01.png

首先看TimerTask,VIRGIN,SCHEDULED,EXECUTED,CANCELLED分别代表执行的状态:未执行,执行中,已执行完,已取消。

方法中,run指该任务执行,cancel,取消该任务,scheduledExecutionTime返回下次执行任务时间。

Timer 其实是一个外观接口,提供定时任务的访问接口schedule

TaskQueue 其实是一个TimerTask的容器,属性中包含一个TimerTask数组。

方法则是对任务的管理

add,加入新的定时任务

getMin,获取时间最近的定时任务

removeMin,移除最近的定时任务

rescheduleMin,重新调度时间

fixUp 吧定时任务往前移,

fixDown 把定时任务往后移

总体来说,这个既是对定时任务的管理与调度。

定时的主要实现部分是在TimerThread

TimerThread实现Thread接口,也就是说通过这个线程来实现定时功能,

主要代码在mainLoop 代码如下

ea6da1cc509c6bafc92df3f1e566288b.png

该函数已知扫描TaskQueue中的TimerTask任务,每次取时间最近的定时任务,如果时间没到,那么线程等待,如果判断轮到某个定时器执行,那么线程阻塞,直到该线程完成。由于轮询的是单一线程,所以在时间点上,每次只能有一个定时任务执行。这样,如果一个任务执行时间过长,那么其他的任务就得等待,如果一个任务一直在执行,那么其余的任务就永远执行不了,被阻塞了。这个和我用spring schedule相像。可能我用到的那个功能和java 自带的timer实现差不多,用到是单一线程的阻塞模式。

后边有时间逐步分析spring schedule,quart

http://www.lbrq.cn/news/967609.html

相关文章:

  • 企业设计网站公司哪家好/网络营销事件
  • 做淘宝图的素材搜索网站/天天seo伪原创工具
  • 做设计的网站定制/苏州seo整站优化
  • 网站优化快速排名软件/2345网址导航是什么浏览器
  • 招聘页面设计/官网seo怎么做
  • 企业简介模板word/北京seo网站开发
  • 天津企业网站建设开发维护/sem是指什么
  • 技术支持海安网站建设/百度搜索资源平台官网
  • 企业可以备案几个网站/地推的60种方法
  • 专做韩国代购的网站/百度快速优化软件
  • 长春网长春关键词排名站设计/推广软文案例
  • 网站如何做ip签名图片/外贸建站与推广
  • 如何建设废品网站/常见的网络营销手段
  • 郉台网站建设/竞价推广怎么做
  • 企业网站建设需要的手续/新手学百度竞价要多久
  • pc端网站/长沙本地推广
  • 卖汽车的网站怎么做的/软件开发一般需要多少钱
  • 精品网站建设费用 真好磐石网络/营销策划书模板
  • 朱子网站建设/网站搜索引擎推广
  • 网站模板软件/域名查询官网
  • wordpress汉字验证码/资阳市网站seo
  • 怎么在公众号上做网站/怎么做神马搜索排名seo
  • 免费游戏打开就能玩/网站优化怎么操作
  • 靖江做网站单位/最新国内重大新闻
  • 做调研的网站一般有哪些/seo学校培训班
  • 毕业设计购物网站怎么做/疫情最新官方消息
  • 公司做网站百度还是阿里/镇江百度推广公司
  • 自己建设网站服务器/对网络营销的理解
  • wordpress 模板层次结构信息图/商丘seo推广
  • 天行健公司网站建设/日本比分算1:1
  • Ansible AWX 自动化运维
  • 属性绑定
  • 8.服务通信:Feign深度优化 - 解密声明式调用与现代负载均衡内核
  • 企业培训笔记:axios 发送 ajax 请求
  • Cannot add property 0, object is not extensible
  • 2023.05.06 更新前端面试问题总结(12道题)