https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A

 
简单介绍Timer的实现。
 
 
1. 基本功能
 
实现定时器的功能。
 
2. Timer
 
实现一个静态装入的定时器:
1) initCount
 
定时器的初始值,静态配置,不可动态改变。
 
2) maxInfligh
 
定时器事件的种类。
 
3) io
 
a. start:某个定时器事件需要启动定时器,io.start.bits为这个定时器事件的ID;
b. stop:某个定时器事件需要停止定时器,io.stop.bits为这个定时器事件的ID;
c. timeout:输出定时器是否超时,以及超时的定时器事件的ID;
 
4) inflight
 
记录各个定时器事件是否需要启动定时器。
 
5) countdown
 
倒数计数器。
 
6) active
 
定时器是否是激活状态,即正在倒计时的状态。
只需要有一个定时器事件要求开始计时,定时器即处于激活状态。
 
7) 倒计时
 
当定时器激活时,不停的进行倒计时:
 
8) 开始计时
 
当io.start.valid为真时,标记该定时器事件对应的inflight比特为真,并且把countdown置位初始值,开始倒计时。
 
9) 停止计时
 
当io.stop.valid为真时,标记该定时器事件对应的inflight比特为假。这个动作不一定会停止定时器。
 
10) 超时
 
当定时器处于激活状态,并且countdown倒数到0时,定时器超时。
 
11) assert
 
意思是说:不能停止没有事先要求启动的定时器事件。
 
个人认为,针对逆否命题进行assert比较好理解,即:
 
 
3. SimpleTimer
 
简单的定时器。不考虑定时器事件,只提供一个开始和停止控制。
 
1) io
 
a. start:开始定时器;
b. stop:停止定时器;
c. timeout:定时器是否超时;
 
2) 开始计时
 
当io.start为真时,定时器激活,开始从initCount - 1倒计时。
 
3) 停止计时
 
当io.stop为真时,定时器转入未激活状态。
 
4) 超时
 
 
4. DynamicTimer
 
定时时长可以动态输入的定时器:
 
1) io
 
其中,period为输入的定时时长。
 
2) 开始计时
 
 
3) 停止计时
 
要求停止,或者倒数到0时,停止计时。
 
4) 倒计时
 
 
5) 超时
 
 
5. 附录
 

Rocket - util - Timer的更多相关文章

  1. 使用java.util.Timer来周期性的执行制定的任务

    使用java.util.Timer来周期性的执行制定的任务 public class HandlerTest extends Activity { int[] images = new int[] { ...

  2. java.util.Timer demo good

    package timer; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org ...

  3. java.util.Timer类似于闹钟定时做任务

    在web中实现任务计划,相当于实现闹钟的功能,要完成2个步骤: 1.定时器的设置: 2.对这个定时器的启动运行和停止进行实时监听 java.util.Timer定时器,实际上是个线程,定时调度所拥有的 ...

  4. 任务调度--使用java.util.Timer实现

    任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务. 举个例子,比如说我们希望一个系统每周日晚上9点都将数据库文件备份一次,这时我们就可以使用任务调度来实现.为了更加的方便,我们需要 ...

  5. Java基础复习--java.util.Timer定时任务

    在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下. (1)sche ...

  6. java.util.Timer简介

    Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示.任务的执行方式有两种: 按固定速率执行:即scheduleAtFixedRate的两个重 ...

  7. java.util.Timer分析源码了解原理

    Timer中最主要由三个部分组成: 任务 TimerTask .  任务队列: TaskQueue queue 和 任务调试者:TimerThread thread 他们之间的关系可以通过下面图示: ...

  8. java倒计时使用java.util.Timer实现,使用两个线程,以秒为单位

    public class Countdown3 { private int lin; private int curSec; public Countdown3(int lin)throws Inte ...

  9. Rocket - util - Annotations

    https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg   介绍util中定义的注解(Annotations).   ​​   1. Annotation ...

随机推荐

  1. 前端【JS】,深入理解原型和原型链

    对于原型和原型链,相信有很多伙伴都说的上来一些,但有具体讲不清楚.但面试的时候又经常会碰到面试官的死亡的追问,我们慢慢来梳理这方面的知识! 要理解原型和原型链的关系,我们首先需要了解几个概念:1.什么 ...

  2. NetCore项目实战篇04---集成IdentityService4

    大家都知道我们的项目中已有web api,现在可以正式访问,不论任何人只要通过输入对应的api网址就可以访问到我们的api 资源,这样是很不安全的,我们需求对当前用户进行身份验证,因此我们在项目中使用 ...

  3. Code::Blocks无法调试 Starting the debuggee failed: No executable specified, use `target exec'

    1.必须建立工程 2.工程名不可有特殊字符或空格,可以有字母.数字.下划线 2.编译器设置里勾选-g(产生调试符号) 3.重新编译项目(如果之前编译过了) 4.调试器设置 > Default & ...

  4. 【Hadoop离线基础总结】MapReduce自定义InputFormat和OutputFormat案例

    MapReduce自定义InputFormat和OutputFormat案例 自定义InputFormat 合并小文件 需求 无论hdfs还是mapreduce,存放小文件会占用元数据信息,白白浪费内 ...

  5. SQLserver分库分表

    https://blog.csdn.net/ExceptionalBoy/article/details/78851327

  6. kubernetes部署redis主从高可用集群

    1.redis主从高可用集群结构 2.k8s部署有状态的服务选择 对于K8S集群有状态的服务,我们可以选择deployment和statefulset statefulset service& ...

  7. sqli-labs之Page-1

    搭建与安装 参考:https://www.fujieace.com/penetration-test/sqli-labs-ec.html 下载:sqli-labs下载 第一关:单引号报错注入 ?id= ...

  8. 小姐姐教你定制一个Logstash Java Filter

    Logstash是用来收集数据,解析处理数据,最终输出数据到存储组件的处理引擎.数据处理流程为: Logstash Java Filter 就是基于Logstash的Filter扩展API开发一个用J ...

  9. 数据库常见考题查询SQL

    1.列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 执行查询: select count(*), a.deptid from employee a groub by depti ...

  10. Oracle百万数据查询语句

    SELECT * FROM (SELECT e.*, ROWNUM rn FROM (SELECT id, name, age, birthDate, sex, describe, city, cre ...