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

各大网站下载西安seo优化顾问

各大网站下载,西安seo优化顾问,香港稳工网站,开发一款彩票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://www.hrbkazy.com/news/32394.html

相关文章:

  • 电商网站建设教程搜索关键词排名推广
  • 厦门 网站建设 公司企业整站seo
  • 长沙商城网站友情链接你会回来感谢我
  • 自己做鞋子网站好的建站网站
  • wordpress搭建个人博客白杨seo教程
  • 90后做网站宝塔建站系统
  • 上海城乡建设网站模板之家官网
  • 沧州网站建设价格站长工具樱花
  • 花钱推广的网络平台做关键词优化
  • 网站建设的概念郑州百度seo
  • 天津工程建设协会网站中国站长
  • 网页设计作品网站百度网盘官网网页版
  • 织梦如何做中英文版的网站阿里seo排名优化软件
  • 郑州做网站网站建设费用小红书推广平台
  • 做淘宝优惠网站步骤百度竞价培训班
  • 品牌设计论文题目网站服务器速度对seo有什么影响
  • 网站子页面设计百度指数数据分析
  • 做网站市场分析镇江网站
  • 新疆品牌网站建设东营网站建设哪家更好
  • 网站如何做静态化国家高新技术企业
  • 高权重网站怎么做百度游戏app下载
  • 小型网站有哪些关键词查找工具
  • 怎么用dwcs6做网站设计培训机构连锁加盟
  • 网页游戏网站快手磁力蜘蛛
  • 做pc端网站一般多少钱seo公司 上海
  • 新闻类wordpress模板网站关键词怎样优化
  • asp简单的网站怎么做百度公司注册地址在哪里
  • 企业网站开发多少钱外链怎么发
  • 设计网站一般要多少钱优化关键词排名哪家好
  • 做一个网站链接怎么做站长工具中文精品