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. Collections集合工具类常用的方法

    java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...

  2. C++关闭同步流 ios::sync_with_stdio(false)

    说明:ios::sync_with_stdio(false) 1.这句语句是用来取消cin的同步,什么叫同步呢?就是iostream的缓冲跟stdio的同步.这就是为什么cin和cout比scanf和 ...

  3. 单元测试中使用Spring的ReflectionTestUtils更方便

    1 简介 ReflectionUtils是Spring中一个常用的类,属于spring-core包:ReflectionTestUtils则属于spring-test包.两者功能有重叠的地方,而Ref ...

  4. 面试官:你说你懂动态代理,那你知道为什么JDK中的代理类都要继承Proxy吗?

    之前我已经写过了关于动态代理的两篇文章,本来以为这块应该没啥问题,没想到今天又被难住了- 太难了!!! 之前文章的链接: 动态代理学习(一)自己动手模拟JDK动态代理. 动态代理学习(二)JDK动态代 ...

  5. 遍历HashMap常用的的三种方式

    遍历HashMap常用的的三种方式 HashMap是我们使用非常多的集合之一,下面就来介绍几种常用的HashMap的遍历方式. 1.首先定义一个新的HashMap,并往里面添加一些数据. HashMa ...

  6. 【x64软路由】OpenWrt(LEDE) 20200329编译 反追踪 抗污染 加速 PSW 无缝集成 UPnP NAS

    固件说明 基于Lede OpenWrt R2020.3.19版本(源码更新截止20200329)Lienol Feed及若干自行维护的软件包 结合家庭x86软路由场景需要定制 按照家庭应用场景对固件及 ...

  7. 组合模式(c++实现)

    组合模式 目录 组合模式 定义 动机 UML类图 场景拆解 源码实现 优点 缺点 定义 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式是的用户对单个对象和组合对象的使 ...

  8. Python 简明教程 --- 3,Python 基础概念

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...

  9. Qt标准对话框按钮文字等设置为中文

    问题描述:QMessageBox.QColorDialog等标准对话框按钮显示都是英文 设置中文方法如下: 1)拷贝Qt安装目录下的qt_zh_CN.qm和qt_zh_CN.ts文件到工程目录中 2) ...

  10. java方法调用顺序

    public class JavalearningApplicationTests { static { System.out.println("Test的静态代码块"); } p ...