当前位置: 首页 > news >正文

成都保障房中心官方网站笔记 发布 wordpress

成都保障房中心官方网站,笔记 发布 wordpress,珠海企业网站设计公司,短视频营销推广公司这里写目录标题 定时器一、定时器是什么二、标准库中的定时器三、实现定时器 定时器 一、定时器是什么 定时器也是软件开发中的⼀个重要组件.类似于⼀个"闹钟".达到⼀个设定的时间之后,就执行某个指定 好的代码. 定时器是⼀种实际开发中⾮常常用的组件. ⽐如⽹络通…

这里写目录标题

  • 定时器
    • 一、定时器是什么
    • 二、标准库中的定时器
    • 三、实现定时器

定时器

在这里插入图片描述

一、定时器是什么

定时器也是软件开发中的⼀个重要组件.类似于⼀个"闹钟".达到⼀个设定的时间之后,就执行某个指定
好的代码.

定时器是⼀种实际开发中⾮常常用的组件.

⽐如⽹络通信中,如果对⽅500ms内没有返回数据,则断开连接尝试重连.

类似于这样的场景就需要用到定时器.

二、标准库中的定时器

  • 标准库中提供了⼀个Timer类.Timer类的核⼼⽅法为 schedule .

  • schedule 包含两个参数.第⼀个参数指定即将要执行的任务代码,第⼆个参数指定多⻓时间之后
    执行(单位为毫秒)
    .

	Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("hello");}}, 3000);

三、实现定时器

定时器的构成:

  1. ⼀个带优先级队列(不要使用PriorityBlockingQueue,容易死锁!)
  2. 队列中的每个元素是⼀个Task对象.
  3. Task中带有⼀个时间属性,队⾸元素就是即将要执行的任务
  4. 同时有⼀个worker线程⼀直扫描队⾸元素,看队⾸元素是否需要执行

详情代码如下:

  1. Timer类提供的核⼼接⼝为schedule,用于注册⼀个任务,并指定这个任务多⻓时间后执行.
public class MyTimer {public void schedule(Runnable command, long after) {// TODO}
}
  1. Task类用于描述⼀个任务(作为Timer的内部类).⾥⾯包含⼀个Runnable对象和⼀个time(毫秒时间戳)

    这个对象需要放到优先队列中.因此需要实现 Comparable 接⼝.

class MyTask implements Comparable<MyTask> {public Runnable runnable;// 为了⽅便后续判定, 使用绝对的时间戳.public long time;public MyTask(Runnable runnable, long delay) {this.runnable = runnable;// 取当前时刻的时间戳 + delay, 作为该任务实际执行的时间戳this.time = System.currentTimeMillis() + delay;}@Overridepublic int compareTo(MyTask o) {// 这样的写法意味着每次取出的是时间最⼩的元素.// 到底是谁减谁?? 俺也记不住!!! 随便写⼀个, 执行下, 看看效果~~return (int)(this.time - o.time);}
}
  1. Timer实例中,通过PriorityQueue来组织若⼲个Task对象.通过schedule来往队列中插⼊⼀个个Task对象.
class MyTimer {// 核⼼结构private PriorityQueue<MyTask> queue = new PriorityQueue<>();// 创建⼀个锁对象private Object locker = new Object();public void schedule(Runnable command, long after) {// 根据参数, 构造 MyTask, 插⼊队列即可.synchronized (locker) {MyTask myTask = new MyTask(runnable, delay);queue.offer(myTask);locker.notify();}}
}
  1. Timer类中存在⼀个worker线程,⼀直不停的扫描队⾸元素,看看是否能执行这个任务.
    所谓"能执行"指的是该任务设定的时间已经到达了.
// 在这⾥构造线程, 负责执行具体任务了.
public MyTimer() {Thread t = new Thread(() -> {while (true) {try {synchronized (locker) {// 阻塞队列, 只有阻塞的⼊队列和阻塞的出队列, 没有阻塞的查看队⾸元素.while (queue.isEmpty()) {locker.wait();}MyTask myTask = queue.peek();long curTime = System.currentTimeMillis();if (curTime >= myTask.time) {// 时间到了, 可以执行任务了queue.poll();myTask.runnable.run();} else {// 时间还没到locker.wait(myTask.time - curTime);}}} catch (InterruptedException e) {e.printStackTrace();}}});t.start();
}
http://www.yayakq.cn/news/528983/

相关文章:

  • 网站突然排名没了wordpress 微信端 主题
  • O2O网站建设需要多少钱品牌推广是什么工作
  • 公司网站开发 nodejswordpress重定向seo
  • 哈尔滨寸金网站建设价钱民权做网站
  • 四川润邦建设工程设计有限公司网站网站建设 美词
  • 在哪里做网站短视频素材下载网站无水印
  • 免费建设手机网站宿城网站建设
  • 有没有做校园文化的网站广州市网站建设公
  • 盗版做的最好的网站卫辉网站建设
  • 网站推广与优化怎么做discuz网站伪静态设置
  • 万能网盘搜索引擎入口网站优化要从哪些方面做
  • 广州做企业网站的公司餐饮logo创意设计
  • 泰安企业建站公司服务好的家装设计
  • 网站改版影响做网站的网站违不违法
  • 手机微信登入网站报价网站制作
  • 风琴折叠图片效果网站淘宝做代码的网站
  • 飞鸟加速器wordpress优化0sql
  • 黄冈商城网站建设哪家好河南做网站的公司有哪些
  • 台州网站建设兼职个人网站域名快速备案
  • php网站开发实例教程 源码网络宣传网站建设定制
  • 网站建设一般多少费用如果做京东优惠卷的网站
  • 门户网站兴化建设局 金自己做的网站页面错误
  • 说说刷赞网站推广网站建设代管推广
  • 贵州专业网站建设公司阿里巴巴1688官网登录
  • 摄影网站网络促销方式如何搭建一个简单的网站
  • 网站建设技术解决方案模具厂咋做网站
  • 前端做网站是什么流程人力资源公司是中介吗
  • 游戏网页设计搜索引擎优化的英文缩写
  • 一个网站多个子域名优化做内贸只要有什么网络推广网站
  • 建设旅游网站目标客户分析网站关键词长尾词