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

免费域名网站php怎么做打码网站

免费域名网站php,怎么做打码网站,家庭电影网站建设,少女论坛资源定时器是日常开发中很常见的组件#xff0c;定时器大家可能不知道是干什么的#xff0c;但是定时炸弹肯定都听过#xff0c;定个时间#xff0c;过一段时间后bomb#xff01;#xff01;#xff01;爆炸 定时器的逻辑和这个一样#xff0c;约定一个时间#xff0c;这…定时器是日常开发中很常见的组件定时器大家可能不知道是干什么的但是定时炸弹肯定都听过定个时间过一段时间后bomb爆炸 定时器的逻辑和这个一样约定一个时间这个时间到达之后执行某个代码逻辑定时器的常见场景有网络通信定时邮件发送等等。 计算机网络中的“超时重传”就用到了定时器。当客户端向服务器发送消息时服务器可能由于某些问题一直不回复此时该怎么办呢?肯定不能无限的等需要有一个最大的期限当到达这个最大期限时该放弃呢还是重传呢或者想别的解决办法这时就用到了定时器。 内部库Timer 当然不光要学会怎么使用内部库提供的定时器我们还要自己手写一个定时器出来。 怎么写呢 1、需要一个线程不断扫描是否有任务到达时间可以执行了。 2、需要一个数据结构存储所有的任务。 3、还需要创建一个类通过类的对象来描述一个任务至少要包含做什么和时间。 那么又出现一个问题该使用什么数据结构呢 用数组吗不行用数组每次扫描都要遍历所有任务时间开销太大 想想我们学过的数据结构每次执行时间最小的是的没错就是它它就是--优先级队列 优先级队列每次放入元素时都会更新顺序保证时间最小的一定在最前面因为我们每次可以执行的一定是时间最小的之后的元素都不需要搜索所以时间复杂度是O1。 代码如下 package Thread;import java.util.PriorityQueue; import java.util.Timer; import java.util.TimerTask;class MyTimerTask implements ComparableMyTimerTask {private Runnable runnable;//要有一个要执行的任务private long time;//还要有一个执行任务的时间这里是绝对时间public MyTimerTask(Runnable runnable,long delay){this.runnable runnable;this.time System.currentTimeMillis() delay;}Overridepublic int compareTo(MyTimerTask o){return (int)(this.time - o.time);//这样的写法就是让队首元素是最小时间的值}public long getTime(){return time;}public Runnable getRunnable(){return runnable;} }class MyTimer{private PriorityQueueMyTimerTask queue new PriorityQueue();private Object locker new Object();public void schedule(Runnable runnable,long delay){synchronized (locker){queue.offer(new MyTimerTask(runnable,delay));locker.notify();}}public MyTimer(){Thread t new Thread(() - {while(true){try{synchronized (locker){while(queue.isEmpty()){locker.wait();}MyTimerTask task queue.peek();long curTime System.currentTimeMillis();if(curTime task.getTime()){task.getRunnable().run();queue.poll();}else{locker.wait(task.getTime() - curTime);}}} catch (InterruptedException e) {e.printStackTrace();}}});t.start();} }public class mtime {public static void main(String[] args) {MyTimer timer new MyTimer();timer.schedule(new Runnable() {Overridepublic void run() {System.out.println(3000);}},3000);timer.schedule(new Runnable() {Overridepublic void run() {System.out.println(2000);}},2000);timer.schedule(new Runnable() {Overridepublic void run() {System.out.println(1000);}},1000);System.out.println(程序开始执行);} } 这里为什么要用wait呢用sleep可以吗 答案是不可以 当我们向队列中插入元素时会调用notify方法这里使用wait是为了当新插入队列中的元素的时间比当前队头的元素的时间小时就需要进行更新重新判定一下最早的任务以及此处的等待时间。
http://www.w-s-a.com/news/274200/

相关文章:

  • 做金融资讯网站需要哪些牌照海珠营销型网站制作
  • 学做网站需要买什么书手机网络
  • 寻找做电影网站团队合作西宁网站建设君博首选
  • 兴仁县城乡建设局网站爱站关键词查询
  • 漳州网站建设公司推荐wordpress更改主机
  • c2c商城网站建设方案英文网站注册
  • 电子商务网站的运营一般需要做哪些准备宣传片拍摄思路
  • 网站建设网页制作百度怎么做自己网站
  • 建设设计网站公司巴州建设局网站
  • 淘宝建设网站的好处韶关市网站建设招标
  • 佛山高端网站免费招聘网站建设
  • 申请网站就是做网站吗wordpress tag 优化
  • 建站系统排行榜菏泽机关建设网站
  • 网站群建设费用科技通信网站模板下载
  • 网站开发的流程是怎样的自己做自媒体在哪个网站比较好
  • 网站的html代码在哪网页线上开发制作
  • 免费商用自媒体图片网站做网站好的公司有哪些
  • 阿雷网站建设公司中国建筑考试网官网首页
  • 厦门网站制作网页无法跳转到建设银行网站
  • 怎么建设自己网站简述网页布局的几种方法
  • 软文营销文案100篇如何优化搜索引擎的搜索功能
  • 做网站创意杭州家具网站建设方案
  • 福州seo网站推广优化乐清建网站
  • 莆田cms建站模板简述网站设计流程
  • 班级网站建设组织机构建设注册中心网站首页
  • 即墨网站建设地址怎么在文档中做网站一点就开
  • 做网站联系方式互联网行业分析
  • 杭州网站建设索q479185700高淳网站建设
  • 有什么做任务拿钱的网站精准的搜索引擎优化
  • 洛阳有建社网站的吗电力建设工程质量监督总网站