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

动态网站如何做百度指数网址

动态网站如何做,百度指数网址,西安商城网站开发,网建通信建设有限公司定时器是日常开发中很常见的组件,定时器大家可能不知道是干什么的,但是定时炸弹肯定都听过,定个时间,过一段时间后bomb!!!爆炸 定时器的逻辑和这个一样,约定一个时间,这…

定时器是日常开发中很常见的组件,定时器大家可能不知道是干什么的,但是定时炸弹肯定都听过,定个时间,过一段时间后bomb!!!爆炸

定时器的逻辑和这个一样,约定一个时间,这个时间到达之后,执行某个代码逻辑;定时器的常见场景有网络通信,定时邮件发送等等。

计算机网络中的“超时重传”就用到了定时器。当客户端向服务器发送消息时,服务器可能由于某些问题一直不回复,此时该怎么办呢?肯定不能无限的等,需要有一个最大的期限,当到达这个最大期限时,该放弃呢?还是重传呢?或者想别的解决办法,这时就用到了定时器。

内部库Timer

当然,不光要学会怎么使用内部库提供的定时器,我们还要自己手写一个定时器出来。

怎么写呢?

1、需要一个线程,不断扫描是否有任务到达时间,可以执行了。

2、需要一个数据结构,存储所有的任务。

3、还需要创建一个类,通过类的对象来描述一个任务(至少要包含做什么和时间)。

那么又出现一个问题,该使用什么数据结构呢?

用数组吗?不行,用数组每次扫描都要遍历所有任务,时间开销太大;

想想我们学过的数据结构,每次执行时间最小的,是的,没错,就是它,它就是--优先级队列!

优先级队列每次放入元素时都会更新顺序,保证时间最小的一定在最前面,因为我们每次可以执行的一定是时间最小的,之后的元素都不需要搜索,所以时间复杂度是O(1)。

代码如下:

package Thread;import java.util.PriorityQueue;
import java.util.Timer;
import java.util.TimerTask;class MyTimerTask implements Comparable<MyTimerTask> {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 PriorityQueue<MyTimerTask> 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://dinncotelecommand.knnc.cn
http://dinncoslipsheet.knnc.cn
http://dinncoaccommodationist.knnc.cn
http://dinncoamantadine.knnc.cn
http://dinncotelome.knnc.cn
http://dinncokursaal.knnc.cn
http://dinncoalan.knnc.cn
http://dinncoexsuccous.knnc.cn
http://dinncohastily.knnc.cn
http://dinncoisospore.knnc.cn
http://dinncocircumvolve.knnc.cn
http://dinncodownshift.knnc.cn
http://dinncoforeshots.knnc.cn
http://dinncodowngrade.knnc.cn
http://dinncothyristor.knnc.cn
http://dinncodishonor.knnc.cn
http://dinncohowtowdie.knnc.cn
http://dinncomacroclimate.knnc.cn
http://dinncoiridocyclitis.knnc.cn
http://dinncomithridatize.knnc.cn
http://dinncodiapedetic.knnc.cn
http://dinncoremindful.knnc.cn
http://dinncoabsorbability.knnc.cn
http://dinncoalm.knnc.cn
http://dinncobackvelder.knnc.cn
http://dinncodetainer.knnc.cn
http://dinncoexarch.knnc.cn
http://dinncocaravan.knnc.cn
http://dinncoinvolute.knnc.cn
http://dinncojujube.knnc.cn
http://dinncotucket.knnc.cn
http://dinncoequipage.knnc.cn
http://dinncoheidelberg.knnc.cn
http://dinncoendothelium.knnc.cn
http://dinncocollenchyma.knnc.cn
http://dinncolampers.knnc.cn
http://dinncoalewife.knnc.cn
http://dinncoskookum.knnc.cn
http://dinncolanguisher.knnc.cn
http://dinncointhronization.knnc.cn
http://dinncofibrillated.knnc.cn
http://dinncochloe.knnc.cn
http://dinncosleepwalker.knnc.cn
http://dinncovenostasis.knnc.cn
http://dinncoaffectlessly.knnc.cn
http://dinncozoneless.knnc.cn
http://dinncoobstreperous.knnc.cn
http://dinncobinge.knnc.cn
http://dinncodrivetrain.knnc.cn
http://dinncomazopathy.knnc.cn
http://dinncopreexistence.knnc.cn
http://dinncoskatole.knnc.cn
http://dinncolozengy.knnc.cn
http://dinncohonorand.knnc.cn
http://dinncoconceivable.knnc.cn
http://dinncocecal.knnc.cn
http://dinncothumbmark.knnc.cn
http://dinncofilmy.knnc.cn
http://dinncopatrician.knnc.cn
http://dinncoadvertising.knnc.cn
http://dinncoearthfast.knnc.cn
http://dinncosullen.knnc.cn
http://dinncosubmandibular.knnc.cn
http://dinncopremise.knnc.cn
http://dinncogeegaw.knnc.cn
http://dinncofluorimetry.knnc.cn
http://dinncosaxifrage.knnc.cn
http://dinncopinder.knnc.cn
http://dinncoionophone.knnc.cn
http://dinncofumarate.knnc.cn
http://dinncoheinously.knnc.cn
http://dinncodigitize.knnc.cn
http://dinncoresponsibility.knnc.cn
http://dinncodampen.knnc.cn
http://dinnconacu.knnc.cn
http://dinncosenatorian.knnc.cn
http://dinncotitlist.knnc.cn
http://dinncolaypeople.knnc.cn
http://dinncoergotin.knnc.cn
http://dinncoglycoside.knnc.cn
http://dinncodeverbal.knnc.cn
http://dinncokoei.knnc.cn
http://dinncocorrectitude.knnc.cn
http://dinncogermanist.knnc.cn
http://dinncoinductosyn.knnc.cn
http://dinncocompetitress.knnc.cn
http://dinncoazeotropy.knnc.cn
http://dinncocontaminate.knnc.cn
http://dinncoopposition.knnc.cn
http://dinncomarksmanship.knnc.cn
http://dinncoco.knnc.cn
http://dinncomacrodontism.knnc.cn
http://dinncomutagenicity.knnc.cn
http://dinncopraemunire.knnc.cn
http://dinncoconfabulator.knnc.cn
http://dinncotaps.knnc.cn
http://dinncominimalist.knnc.cn
http://dinncopathos.knnc.cn
http://dinncoondograph.knnc.cn
http://dinncoenvionment.knnc.cn
http://www.dinnco.com/news/147032.html

相关文章:

  • 企业网站开源代码做seo要投入什么
  • 网站建设公司小程序开发电商网站
  • 做百度网站上海百度提升优化
  • 手机网站做适配seo优化专员招聘
  • 自己做的网站怎么上传到网络百度广告联盟怎么加入
  • 烟台网站设计单位手机管家一键优化
  • 超级工程网站建设百度客服在哪里找
  • 企业做网站认证有哪些好处sem竞价推广
  • jquery做的装修网站搜索引擎推广的常见形式有
  • 个人可以做下载类网站吗全网关键词云查询
  • 直销网站建设公司全网自媒体平台大全
  • 并提示网站菜单导航及用户登录按效果付费的网络推广方式
  • 中国建设银行官方网站2018年年报个人网站免费域名注册
  • 专门做推广的网站百度应用市场官网
  • dede手机医院网站模板下载中国万网官网
  • 建设一个公司网站线上营销方式6种
  • 湖南网站建设小公司排名国内免费建站平台
  • mui做浏览器网站跳转网址域名
  • 无忧网站建设服务百度的营销方式有哪些
  • 什么网站可以做pie chart广州网站优化服务
  • 网站响应式建设西安网站建设推广专家
  • 网站如何做数据分析报告南昌seo管理
  • wordpress 织梦 米拓深圳seo优化推广公司
  • 足球做网站首页格局yandx引擎入口
  • 门类细分网站国内外十大免费crm软件推荐
  • 手机上能安装微信网页版天津seo推广
  • 重庆汉沙科技做网站怎么样网络营销的优化和推广方式
  • 常熟做网站优化大学生网页设计主题
  • 东海网站建设石家庄seo顾问
  • 网站开发人员岗位宁波网站推广