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

食品 骏域网站建设专家在线电子商务网站开发

食品 骏域网站建设专家,在线电子商务网站开发,vi视觉形象设计手册,怎样建立免费的个人网站这里写目录标题 定时器一、定时器是什么二、标准库中的定时器三、实现定时器 定时器 一、定时器是什么 定时器也是软件开发中的⼀个重要组件.类似于⼀个闹钟.达到⼀个设定的时间之后,就执行某个指定 好的代码. 定时器是⼀种实际开发中⾮常常用的组件. ⽐如⽹络通… 这里写目录标题 定时器一、定时器是什么二、标准库中的定时器三、实现定时器 定时器 一、定时器是什么 定时器也是软件开发中的⼀个重要组件.类似于⼀个闹钟.达到⼀个设定的时间之后,就执行某个指定 好的代码. 定时器是⼀种实际开发中⾮常常用的组件. ⽐如⽹络通信中,如果对⽅500ms内没有返回数据,则断开连接尝试重连. 类似于这样的场景就需要用到定时器. 二、标准库中的定时器 标准库中提供了⼀个Timer类.Timer类的核⼼⽅法为 schedule . schedule 包含两个参数.第⼀个参数指定即将要执行的任务代码,第⼆个参数指定多⻓时间之后 执行(单位为毫秒). Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic void run() {System.out.println(hello);}}, 3000);三、实现定时器 定时器的构成 ⼀个带优先级队列(不要使用PriorityBlockingQueue,容易死锁!)队列中的每个元素是⼀个Task对象.Task中带有⼀个时间属性,队⾸元素就是即将要执行的任务同时有⼀个worker线程⼀直扫描队⾸元素,看队⾸元素是否需要执行 详情代码如下 Timer类提供的核⼼接⼝为schedule,用于注册⼀个任务,并指定这个任务多⻓时间后执行. public class MyTimer {public void schedule(Runnable command, long after) {// TODO} }Task类用于描述⼀个任务(作为Timer的内部类).⾥⾯包含⼀个Runnable对象和⼀个time(毫秒时间戳) 这个对象需要放到优先队列中.因此需要实现 Comparable 接⼝. class MyTask implements ComparableMyTask {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);} }Timer实例中,通过PriorityQueue来组织若⼲个Task对象.通过schedule来往队列中插⼊⼀个个Task对象. class MyTimer {// 核⼼结构private PriorityQueueMyTask 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();}} }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.zqtcl.cn/news/312763/

相关文章:

  • 有口碑的常州网站建设传统网站建设
  • 大学网站建设排名金乡网站建设
  • 手机网站开发步骤徐州网站制作怎么做
  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术
  • 天津北京网站建设公司大网站建设公司
  • 网站需要在哪些方面备案百度云建网站
  • 西安手机网站定制网站建设西安网站注册
  • 怎么做秒赞网站企业自己建设的营销网络
  • 一般网站建设需求有哪些wordpress脚注更改
  • 海报设计在线生成免费网站排名优化方案
  • 网站开发综合设计报告怎么制作浏览器网页
  • 做网站打广告青岛网站营销推广
  • 网站建设中首页模板本科 网站建设的基础教程
  • 推广网站优化seo教程上排名抖音营销
  • 创业园区网站建设wordpress对接公众号源码
  • 怎么设计公司的网站长沙seo结算
  • 参加网站建设项目人员保障体系镇江网站建设门户报价
  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置
  • 福州营销网站建设老品牌网站开通