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. 解决php获取不到Authorization问题

    我用的是thinkphp3.2.3, 在使用jwt的时候通过Authorization传递token,但是每次都接收不到,通过修改..htaccess文件,问题成功解决了,下面是的.htaccess文 ...

  2. 201771010113 李婷华 《面向对象程序设计(Java)》第十七周总结

    一.理论知识部分 Java 的线程调度采用优先级策略:优先级高的先执行,优先级低的后执行:多线程系统会自动为每个线程分配一个优先级,缺省时,继承其父类的优先级: 任务紧急的线程,其优先级较高: 同优先 ...

  3. qt creator源码全方面分析(4-5)

    目录 Qt中的字符串 QLatinString 详细介绍 源码 小结 QStringLiteral(str) 详细介绍 源码 小结 Qt中的字符串 Qt中处理字符串最常用的肯定是QString,但是在 ...

  4. spark是怎么从RDD升级到DataFrame的?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第五篇,我们来看看DataFrame. 用过Python做过机器学习的同学对Python当中pandas当中的Data ...

  5. sql server 百万级数据库优化方案

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. 【蓝桥杯C组】备赛基础篇之高精度算法

    一.高精度加法 思路: 运用vector数组(c选手可用len来记录数组长度,数组去保存数字)将存入字符串里面的数字符倒叙保存,按照小学的加法列式,相加保存进位即可.具体参考代码. 详细代码解析: # ...

  7. threading模块—Python多线程编程

    Threading 模块 threading 模块除了提供基本的线程和锁定支持外,还提供了更高级别.功能更全面的线程管理.threading 模块支持守护线程,其工作方式是:守护线程一般是一个等待客户 ...

  8. Vue中跨域问题解决方案1

    我们需要配置代理.代理可以解决的原因:因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的概念(如果服务器没有设置禁止跨域的权限问题),也就是说,我们可以配置 ...

  9. SpringDataJpa实现增删改查分页

    一.引入依赖 <properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.v ...

  10. 汉语分词工具包jieba

    #分词pip install jieba import jieba str="你真的真不知道我是谁吗?" res1=jieba.cut(str) print(list(res1)) ...