定时器问题

定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持。一个定时器的实现需要具备以下四种基本行为:添加定时器、取消定时器、定时器检查、到期执行。
请设计一个定时器并实现以下三种基本行为,函数原型已给出,可使用任意编程语言设计数据结构及实现,并尽可能高效地支持大量定时器:
// 添加定时器:经过特定时间间隔后执行目标操作
// 输入 1:Interval 定时器时间,单位ms
// 输入 2:ExpiryAction 目标操作
// 返回:定时器 Id
StartTimer(Interval, ExpiryAction) -> TimerId
// 取消定时器
// 输入:定时器 Id
StopTimer(TimerId)
// 定时器检查
// 系统每隔 10ms 会调用一次该函数
PerTickBookkeeping()
话不多说,直接上代码:
1)Timer.java:
import java.util.ArrayList;
public class Timer {
private long interval; // 定时器时间,单位 ms
private String expiryAction; // 目标操作
private int timerId; // 定时器Id
private long waitTime; // 定时器等待时间
// 构造函数
public Timer(){
this.waitTime = 0;
}
// 添加定时器
public int StartTimer(long interval, String expiryAction, int id){
this.interval = interval;
this.expiryAction = expiryAction;
this.timerId = id;
return timerId;
}
// 取消定时器
public void StopTimer(int timerId, ArrayList<Timer> timer){
timer.remove(timerId);
}
// 定时器检查
public void PerTickBookkeeping(){
if (this.interval > this.waitTime)
this.waitTime += 10;
else{
System.out.println("定时器"+this.timerId+":"+this.expiryAction);
this.waitTime = 0;
}
}
public long getInterval() {
return interval;
}
public void setInterval(long interval) {
this.interval = interval;
}
public String getExpiryAction() {
return expiryAction;
}
public void setExpiryAction(String expiryAction) {
this.expiryAction = expiryAction;
}
public int getTimerId() {
return timerId;
}
public void setTimerId(int timerId) {
this.timerId = timerId;
}
public long getWaitTime() {
return waitTime;
}
public void setWaitTime(long waitTime) {
this.waitTime = waitTime;
}
}
2)DoTimer.java:
import java.util.ArrayList;
import java.util.Iterator;
public class DoTimer extends Thread {
private static ArrayList<Timer> timerList;
public static void main(String[] args){
timerList = new ArrayList<Timer>();
Timer timer1 = new Timer();
timer1.StartTimer(3000, "我是第一个定时器,等待3秒", 0);
Timer timer2 = new Timer();
timer2.StartTimer(4000, "我是第二个定时器,等待4秒", 1);
timerList.add(timer1);
timerList.add(timer2);
//public void run(){}
new Thread(){
@Override
public void run() {
while(true){
Iterator<Timer> it = timerList.iterator();
while(it.hasNext()){
it.next().PerTickBookkeeping();
}
try {
sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
timer1.StopTimer(timer1.getTimerId(), timerList);
}
}
希望本篇文章可以帮助到您
# Java定时器实例
# Java定时器
# Java实现一个简单的定时器代码解析
# Java定时器Timer使用方法详解
# Java多线程定时器Timer原理及实现
# java定时器timer的使用方法代码示例
# RxJava2.x实现定时器的实例代码
# Java定时器例子_动力节点Java学院整理
# Java 中Timer和TimerTask 定时器和定时任务使用的例子
# 浅谈java定时器的发展历程
# 我是
# 程序开发
# 第一个
# 数据结构
# 第二个
# 到您
# 三种
# 四种
# 多说
# 可以帮助
# 每隔
# 编程语言
# util
# private
# ArrayList
# import
# brush
# public
# waitTime
# timerId
相关文章:
定制建站策划方案_专业建站与网站建设方案一站式指南
,怎么在广州志愿者网站注册?
建站主机选购指南与交易推荐:核心配置解析
C++用Dijkstra(迪杰斯特拉)算法求最短路径
太原网站制作公司有哪些,网约车营运证查询官网?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何在阿里云部署织梦网站?
香港服务器租用费用高吗?如何避免常见误区?
MySQL查询结果复制到新表的方法(更新、插入)
,如何利用word制作宣传手册?
建站主机CVM配置优化、SEO策略与性能提升指南
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
香港服务器部署网站为何提示未备案?
高防服务器如何保障网站安全无虞?
专业商城网站制作公司有哪些,pi商城官网是哪个?
建站之星在线客服如何快速接入解答?
Swift中switch语句区间和元组模式匹配
如何快速搭建高效服务器建站系统?
python的本地网站制作,如何创建本地站点?
网站制作模板下载什么软件,ppt模板免费下载网站?
网站制作的步骤包括,正确网址格式怎么写?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何选择适合PHP云建站的开源框架?
清除minerd进程的简单方法
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何快速使用云服务器搭建个人网站?
建站之星如何开启自定义404页面避免用户流失?
如何选择高效稳定的ISP建站解决方案?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何选择靠谱的建站公司加盟品牌?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站主机如何安装配置?新手必看操作指南
如何在香港免费服务器上快速搭建网站?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何通过可视化优化提升建站效果?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
威客平台建站流程解析:高效搭建教程与设计优化方案
内网网站制作软件,内网的网站如何发布到外网?
SQL查询语句优化的实用方法总结
建站主机与服务器功能差异如何区分?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何配置支付宝与微信支付功能?
Android滚轮选择时间控件使用详解
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。