全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java定时器问题实例解析

定时器问题

  定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持。一个定时器的实现需要具备以下四种基本行为:添加定时器、取消定时器、定时器检查、到期执行。

  请设计一个定时器并实现以下三种基本行为,函数原型已给出,可使用任意编程语言设计数据结构及实现,并尽可能高效地支持大量定时器:  

       // 添加定时器:经过特定时间间隔后执行目标操作

  // 输入 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小时内与您取得联系。