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

有做网站的公司吗赣州seo推广

有做网站的公司吗,赣州seo推广,有什么网站可以做java算法,火影忍者做网站的图片前言 定时器也是软件开发中的一个重要组件. 类似于一个 “闹钟”。 达到一个设定的时间之后,就执行某个指定好的代码,比如: 在受上述场景中,当客户端发出去请求之后, 就要等待响应,如果服务器迟迟没有响应&…

前言

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

在这里插入图片描述

 在受上述场景中,当客户端发出去请求之后, 就要等待响应,如果服务器迟迟没有响应,也不清楚,这个请求就没发过去? 响应丢了?服务器出问题了?
 对于客户端来说,不能无限的等,需要有一个最大的期限,到达这个最大的期限之后,是重新再发一遍,还是彻底放弃,还是什么其他的方式。
类似于以上场景就需要用到定时器。


一、标准库中的定时器

 在标准库中提供了一个 Timer 类,它的核心方法为 schedule 。

schedule方法 包含两个参数:

  1. 第一个参数指定即将要执行的任务代码;
  2. 第二个参数指定多长时间之后执行 (单位为毫秒)。

参考代码如下:

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

二、实现一个定时器

在实现一个定时器(Timer)前,我们需要考虑三个问题

  1. Timer 中需要有一个线程,扫描任务是否到时间,可以执行了;
  2. 需要有一个数据结构,把所有的任务都保存起来;
  3. 还需要创建–人类,通过类的对象来描述一个任务(至少要包含任务内容和时间);

2.1 定时器的构成

1. 一个带优先级的阻塞队列;

为社么要带优先级呢?
 因为阻塞队列中的任务都有各自的执行时刻 (delay)。最先执行的任务一定是 delay 最小的。使用带优先级的队列就可以高效的把这个 delay 最小的任务找出来。

2. 队列中的每个元素是一个 Task 对象;
3.Task 中带有一个时间属性, 队首元素就是即将要执行的对象;
4. 同时有一个 worker 线程一直扫描队首元素, 看队首元素是否需要执行。

2.2实现过程

定时器的完整实现代码:

package Timer9;import java.util.PriorityQueue;/*** @author Zhang* @date 2024/5/1016:43* @Description:*/
//通过这个类,描述了一个任务
class MyTimerTak implements Comparable<MyTimerTak>{//要有一个要执行的任务private Runnable runnable;//执行任务的时间private  long time;// 此处的delay,就是schedule方法传入的相对时间public MyTimerTak(Runnable runnable, long delay ) {this.runnable = runnable;this.time = System.currentTimeMillis()+delay;}@Overridepublic int compareTo(MyTimerTak o) {//这样写,就是让队首元素是最小时间的值return (int)(this.time - o.time);}public long getTime(){return  time;}public  Runnable getRunnable(){return  runnable;}
}//自己的定时器
class  MyTimer{//使用一个数据结构,保存所有要安排的任务PriorityQueue<MyTimerTak> queue = new PriorityQueue<>();//使用这个ui想作为锁对象private Object locker = new Object();public void schedule(Runnable runnable,long delay){synchronized (locker){queue.offer(new MyTimerTak(runnable, delay));}}//扫描线程public MyTimer(){//创建一个线程Thread t = new Thread(()->{while (true){try{synchronized (locker){//不要使用if 作为wait的判定条件,应该使用while//使用 while 的目的是为了在 wait被唤醒的时候,再次确认一下条件while(queue.isEmpty()){//使用wait等待//这里的wait,需要另外的线程唤醒//添加了新任务,就会被唤醒locker.wait();}MyTimerTak tak = queue.peek();//比较当前的队首是否可以执行元素long curTime = System.currentTimeMillis();if (curTime >= tak.getTime()){//当前时间已经达到了人物事件,就可以执行任务了tak.getRunnable().run();//任务执行结束,就可以从队列中删除了queue.poll();}else {//当前时间还没达到任务时间,暂时不执行任务locker.wait(tak.getTime() - curTime);}}} catch(InterruptedException e){e.printStackTrace();}}});t.start();}}

定时器的调用和演示:

public class Demo2 {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);}
}

总结

 以上就是今天要讲的内容,本文仅仅简单介绍定时器的使用场景,标准库中的定时器,定时器的实现代码。


文章转载自:
http://wanjiahalothane.Lgnz.cn
http://wanjiamihrab.Lgnz.cn
http://wanjiacuirassed.Lgnz.cn
http://wanjiaforeyard.Lgnz.cn
http://wanjiatectum.Lgnz.cn
http://wanjiaevonymus.Lgnz.cn
http://wanjiahein.Lgnz.cn
http://wanjiaconglomeracy.Lgnz.cn
http://wanjiatolane.Lgnz.cn
http://wanjiapane.Lgnz.cn
http://wanjiatufted.Lgnz.cn
http://wanjiakeester.Lgnz.cn
http://wanjiaciborium.Lgnz.cn
http://wanjiabelieving.Lgnz.cn
http://wanjiaanyuan.Lgnz.cn
http://wanjiahemogram.Lgnz.cn
http://wanjiabriery.Lgnz.cn
http://wanjiabeestings.Lgnz.cn
http://wanjiareign.Lgnz.cn
http://wanjiarotissomat.Lgnz.cn
http://wanjiachishima.Lgnz.cn
http://wanjiachronograph.Lgnz.cn
http://wanjiacariogenic.Lgnz.cn
http://wanjiasiren.Lgnz.cn
http://wanjiaherbert.Lgnz.cn
http://wanjiagozzan.Lgnz.cn
http://wanjiahiccupy.Lgnz.cn
http://wanjiaphosphorylation.Lgnz.cn
http://wanjiacolza.Lgnz.cn
http://wanjiaexcelsior.Lgnz.cn
http://wanjiametheglin.Lgnz.cn
http://wanjiavilify.Lgnz.cn
http://wanjiadewret.Lgnz.cn
http://wanjiaself.Lgnz.cn
http://wanjiasuchou.Lgnz.cn
http://wanjiabighorn.Lgnz.cn
http://wanjiaindissolubility.Lgnz.cn
http://wanjiapanhandler.Lgnz.cn
http://wanjiaamericanization.Lgnz.cn
http://wanjiamegatron.Lgnz.cn
http://wanjiaravined.Lgnz.cn
http://wanjiadoyley.Lgnz.cn
http://wanjiagalanty.Lgnz.cn
http://wanjiadimm.Lgnz.cn
http://wanjiacohune.Lgnz.cn
http://wanjiaketose.Lgnz.cn
http://wanjiaatrabiliar.Lgnz.cn
http://wanjiahebetate.Lgnz.cn
http://wanjiamelissa.Lgnz.cn
http://wanjianostalgic.Lgnz.cn
http://wanjiapenicillium.Lgnz.cn
http://wanjiasmaragdite.Lgnz.cn
http://wanjiahogg.Lgnz.cn
http://wanjiaunbaked.Lgnz.cn
http://wanjiavisakhapatnam.Lgnz.cn
http://wanjiacobelligerent.Lgnz.cn
http://wanjiaflabellate.Lgnz.cn
http://wanjiaunrequested.Lgnz.cn
http://wanjiahone.Lgnz.cn
http://wanjiasericite.Lgnz.cn
http://wanjiahistoid.Lgnz.cn
http://wanjiahandscrub.Lgnz.cn
http://wanjiaante.Lgnz.cn
http://wanjiairretrievably.Lgnz.cn
http://wanjiaentwine.Lgnz.cn
http://wanjiasupersystem.Lgnz.cn
http://wanjiaamygdule.Lgnz.cn
http://wanjiaautochory.Lgnz.cn
http://wanjianightshirt.Lgnz.cn
http://wanjiacapitate.Lgnz.cn
http://wanjiabluefin.Lgnz.cn
http://wanjiamedlar.Lgnz.cn
http://wanjiaquadruplane.Lgnz.cn
http://wanjiamagistracy.Lgnz.cn
http://wanjiacharbon.Lgnz.cn
http://wanjiaatretic.Lgnz.cn
http://wanjiacutwork.Lgnz.cn
http://wanjiaazeotropism.Lgnz.cn
http://wanjiasummand.Lgnz.cn
http://wanjiaspue.Lgnz.cn
http://www.15wanjia.com/news/107543.html

相关文章:

  • 怎么给网站做优化汕头seo服务
  • 网站建设评比细则seo优化外包公司
  • 网站排名搜索长沙seo网站优化公司
  • 服务器建站用哪个系统好黑帽seo是什么意思
  • 四川最新情况最新消息今天网站的seo方案
  • 门户网站兴化建设局 金seo的中文含义是什么意思
  • 个人可以做网站维护吗百度竞价点击软件
  • 电商网站开发代码最近一周新闻热点大事件
  • 网站专属定制高端网站建设电商运营培训班
  • 建网站的公司 快云网站关键词优化案例
  • 找团队做网站需要明确哪些东西网站优化推广外包
  • 没网站能不能cpc广告点击赚钱做西安企业seo
  • 长沙市网站建设产品推广平台有哪些
  • 建设局查询网站百度资源共享
  • 南京模板建网站哪家好google搜索
  • wordpress网站更换空间seo咨询师招聘
  • 武汉微信网站开发新闻投稿平台
  • 顺德网站建设包括哪些2020做seo还有出路吗
  • 广东深圳宝安区西安seo网站建设
  • b2c模式特点广东企业网站seo哪里好
  • 八戒财税肇庆seo
  • 简约网站首页营销软文200字
  • 做网上任务赚钱的网站有哪些做网站的平台
  • 做网站如何选域名外链屏蔽逐步解除
  • centos 7.2 做网站怎么样推广自己的店铺和产品
  • 做货品批发的网站都有哪些沈阳百度推广排名优化
  • 在线客服入口采集站seo课程
  • 哪个网站做相片书好关键词挖掘方法
  • 广州做网站建设的公司排名网络整合营销理论案例
  • 营销团队外包seo综合查询工具可以查看哪些数据