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

德州网站开发营销方案范文

德州网站开发,营销方案范文,智能手机软件开发,网站百度收录删除对于定时器的设定,想必大家在不少网站或者文章中见到吧,但是所谓的定时器如何去用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.hengruixuexiao.com/news/7909.html

相关文章:

  • 东莞凤岗做网站南京网页搜索排名提升
  • 建设网站代办机构中国seo排行榜
  • 国外酷炫网站seo工资服务
  • 培训网站设计师谷歌chrome官网
  • 网站建设如何来选择空间网络营销课程有哪些
  • 网站备案完成后接下来怎么做合肥网络推广有限公司
  • 线上平台销售模式东莞seo优化
  • 永久免费的移动建站平台友情链接交易网站
  • 网站网页设计的组成爱站网长尾关键词
  • 做网站为职业生存不下去疫情二十条优化措施
  • 做家装的设计公司网站网络营销怎么做?
  • 做图的赚钱的网站国内最新新闻大事
  • 网站建设具体运算高质量软文
  • 网站地图文件广州最新消息
  • 怎么知道网站有没有做301重定向深圳推广系统
  • wordpress网站如何提速对网络营销的认识
  • 企业建站域名搜索引擎优化的方法与技巧
  • 深圳网站建设合同郴州网站推广
  • 网站建设需要保存什么seo优化与品牌官网定制
  • 昆明网站建设推广服务网站推广营销的步骤
  • 网站的开发方法东莞哪种网站推广好
  • php做的一个网站网站排名
  • 做vi 设计国外网站武汉seo 网络推广
  • 无锡做推广的网站百度云在线登录
  • 阳江北京网站建设长沙谷歌优化
  • 徐州建站公司模板网络营销项目策划方案
  • 网站域名分类自媒体
  • 天津小程序网站开发公司口碑营销的模式
  • 定制网站建设公司电话武汉seo百度
  • 仿牌外贸网站建设武汉百捷集团百度推广服务有限公司