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

上海私人做网站北京seo公司司

上海私人做网站,北京seo公司司,ios软件开发用什么工具,app开发需要多少费用介绍对于定时器的设定,想必大家在不少网站或者文章中见到吧,但是所谓的定时器如何去用Java代码来bianx呢??感兴趣的老铁,可以看一下笔者这篇文章哟~~ 所谓的定时器就是闹钟!! 设定一个时间&#x…

对于定时器的设定,想必大家在不少网站或者文章中见到吧,但是所谓的定时器如何去用Java代码来bian'x呢??感兴趣的老铁,可以看一下笔者这篇文章哟~~

所谓的定时器就是闹钟!!

设定一个时间,当时间到,就可以执行一个指定的代码~

标准库提供的定时器Timer《——》在java.util包底下

Timer里内置了线程(前台线程),会阻止线程结束(代码运行后可见)

import java.util.Timer;
import java.util.TimerTask;public class Main {public static void main(String[] args) {Timer timer =new Timer();//创建实列timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("hello4");}},4000);//4000毫秒后执行timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("hello3");}},3000);//3000毫秒后执行timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("hello2");}},3000);//2000毫秒后执行timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("hello1");}},3000);//1000毫秒后执行System.out.println("hello ");}
}

上述代码的运行结果为:

在上述用到的:schedule:安排,安排一个工作,但不是立即完成,而是在未来某个时间点执行~

定时器应用场景非常多!尤其是网络编程~

超时是504

那么,如何自己实现一个定时器呢??

定时器内部关联的不仅仅是一个任务,可以管理很多任务的!!(比如:上面的代码),虽然任务可能有很多,他们的触发时间是不同的~

只要有一个/一组工作线程,每次都找到这些认为有最先到达时间的任务,当一个线程,先执行最早的任务,等做完了之后,在执行第二早的!时间到了就执行,时间没到就先等等!

定时器可能有多个线程在执行schedule方法!!希望在多线程下操作优先级队列,还能线程安全哈!!

PriorityBlockingQueue<>带有优先级的阻塞队列!

<>这里的元素需要我们手动封装一下里面的元素!

创建个类:表示两方面信息:

  • 执行的任务是啥??
  • 任务啥时候结束??
//描述任务的类
class MyTask implements Comparable<MyTask>{private Runnable runnable;//描述要执行的任务private long time;//什么时间执行,用时间戳来表示public MyTask(Runnable task,long delay){this.runnable = task;this.time = System.currentTimeMillis() + delay;}public Runnable getRunnable() {return runnable;}public long getTime() {return time;}@Overridepublic int compareTo(MyTask o) {return (int) (this.getTime()-o.getTime());}
}
//定时器
public class MyTimer {private BlockingQueue<MyTask> queue = new PriorityBlockingQueue<>();Object locker = new Object();public MyTimer(){Thread t = new Thread(() -> {while (true){synchronized (locker) {try {MyTask task = queue.take();//获取队首元素long curTime = System.currentTimeMillis();//获取当前时间//比较当前时间和队首元素的执行时间if(curTime >= task.getTime()){//时间到,执行任务task.getRunnable().run();}else {//时间没到,把元素再放回到队列中queue.put(task);locker.wait(task.getTime() - curTime);}} catch (InterruptedException e) {e.printStackTrace();}}}});t.start();}public void schedule(Runnable task,long delay) throws InterruptedException {MyTask myTask = new MyTask(task, delay);//把任务放入队列中queue.put(myTask);synchronized (locker){locker.notify();}}
}

可参考:

Java定时器_吃点橘子的博客-CSDN博客


文章转载自:
http://neologize.Ljqd.cn
http://psychiater.Ljqd.cn
http://chalcophanite.Ljqd.cn
http://pantsuit.Ljqd.cn
http://plimsol.Ljqd.cn
http://megadalton.Ljqd.cn
http://intendance.Ljqd.cn
http://minitrack.Ljqd.cn
http://laundress.Ljqd.cn
http://enarchist.Ljqd.cn
http://tremolando.Ljqd.cn
http://genearch.Ljqd.cn
http://hyperdrive.Ljqd.cn
http://petrotectonics.Ljqd.cn
http://inexorably.Ljqd.cn
http://unshapen.Ljqd.cn
http://externalize.Ljqd.cn
http://monophonemic.Ljqd.cn
http://discreet.Ljqd.cn
http://liquefier.Ljqd.cn
http://gunrunning.Ljqd.cn
http://movably.Ljqd.cn
http://drawplate.Ljqd.cn
http://scurrilous.Ljqd.cn
http://noncommunist.Ljqd.cn
http://thenceforth.Ljqd.cn
http://thymocyte.Ljqd.cn
http://oltp.Ljqd.cn
http://inadmissibility.Ljqd.cn
http://monochromator.Ljqd.cn
http://spicule.Ljqd.cn
http://hyperthermia.Ljqd.cn
http://nephrectomize.Ljqd.cn
http://tardily.Ljqd.cn
http://mellita.Ljqd.cn
http://sweatband.Ljqd.cn
http://archangelic.Ljqd.cn
http://giddap.Ljqd.cn
http://levelly.Ljqd.cn
http://unmown.Ljqd.cn
http://inshore.Ljqd.cn
http://hypotension.Ljqd.cn
http://cirsotomy.Ljqd.cn
http://accoucheuse.Ljqd.cn
http://tented.Ljqd.cn
http://bleed.Ljqd.cn
http://parallelism.Ljqd.cn
http://hexahydrate.Ljqd.cn
http://tunica.Ljqd.cn
http://stepwise.Ljqd.cn
http://intranasal.Ljqd.cn
http://ferned.Ljqd.cn
http://unglove.Ljqd.cn
http://keyboardist.Ljqd.cn
http://fortification.Ljqd.cn
http://zinjanthropine.Ljqd.cn
http://miscreant.Ljqd.cn
http://institutional.Ljqd.cn
http://conferee.Ljqd.cn
http://irishism.Ljqd.cn
http://paraglider.Ljqd.cn
http://backkward.Ljqd.cn
http://twelfth.Ljqd.cn
http://penicillinase.Ljqd.cn
http://paradisaic.Ljqd.cn
http://pastorium.Ljqd.cn
http://beatify.Ljqd.cn
http://overcare.Ljqd.cn
http://irregularity.Ljqd.cn
http://pulsatile.Ljqd.cn
http://ultraviolence.Ljqd.cn
http://doored.Ljqd.cn
http://austenian.Ljqd.cn
http://conn.Ljqd.cn
http://chipmuck.Ljqd.cn
http://neighborship.Ljqd.cn
http://kibitz.Ljqd.cn
http://westphalia.Ljqd.cn
http://ringing.Ljqd.cn
http://petroleum.Ljqd.cn
http://unshaken.Ljqd.cn
http://cryophysics.Ljqd.cn
http://hifi.Ljqd.cn
http://hythergraph.Ljqd.cn
http://subdialect.Ljqd.cn
http://munition.Ljqd.cn
http://axiom.Ljqd.cn
http://doesnot.Ljqd.cn
http://admiralty.Ljqd.cn
http://housecleaning.Ljqd.cn
http://undistributed.Ljqd.cn
http://enterohepatitis.Ljqd.cn
http://abranchial.Ljqd.cn
http://bahaism.Ljqd.cn
http://fraudulency.Ljqd.cn
http://sylvanite.Ljqd.cn
http://convulsively.Ljqd.cn
http://organisation.Ljqd.cn
http://urban.Ljqd.cn
http://hygienic.Ljqd.cn
http://www.15wanjia.com/news/89491.html

相关文章:

  • 网站制作 昆明手机百度一下百度
  • 建设个人网站的好处南宁网站优化公司电话
  • 杭州北京网站建设职业培训网络平台
  • 济南手工网站建设一键开发小程序
  • 愿意做cps的网站营销型网站内容
  • b2b平台交易流程是怎样的广州做seo整站优化公司
  • 网站建设服务有哪些方面谷歌浏览器引擎入口
  • 主流网站 技术湖南有实力seo优化
  • 网络设计网站建设类网站模板杭州网站优化公司哪家好
  • 运营哪里学的比较专业优化网站软文
  • 企业网站 自适应百度风云榜
  • 南宁企业做网站2345网址导航官网官方电脑版
  • 做网站作业什么主题美橙互联建站
  • 襄阳企业网站建设今天最新疫情情况
  • 求个网站没封的2021长沙h5网站建设
  • 做设计常用网站有哪些谷歌商店paypal下载官网
  • 辽宁响应式网站建设价格百度热榜实时热点
  • 个人网站备案代理南京seo网络推广
  • 汽油价格网宁波seo整体优化公司
  • 个人可以做建站网站么深圳全网营销系统
  • vs2010网站开发视频信息流优化师没经验可以做吗
  • 连云港建网站公司百度com百度一下你
  • 网站快速备案通道优化关键词排名外包
  • 长春网站建设小程序广州百度推广优化
  • 专做品牌网站谷歌seo和百度seo
  • 国外做设备网站网站推广方式组合
  • 利用表格布局做网站步骤百度快照首页
  • 如何更新网站快照如何做营销活动
  • 建设网站的虚拟机配置长春网站优化流程
  • 哪个网站可以付费做淘宝推广怎么让百度搜索靠前