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

网站建设技术服务的方式是什么意思小米手机优化

网站建设技术服务的方式是什么意思,小米手机优化,自己公司做网站,企业网站 三合一基于java中延时队列的实现该文章#xff0c;我们这次主要是来实现基于DelayQueue实现的延时队列。 使用DelayQueue实现的延时队列的步骤#xff1a; 定义一个继承了Delayed的类#xff0c;定义其中的属性#xff0c;并重写compareTo和getDelay两个方法创建一个Delayqueue…基于java中延时队列的实现该文章我们这次主要是来实现基于DelayQueue实现的延时队列。 使用DelayQueue实现的延时队列的步骤 定义一个继承了Delayed的类定义其中的属性并重写compareTo和getDelay两个方法创建一个Delayqueue用于创建队列创建一个生产者用于将信息添加到队列中创建一个消费者用来从队列中取出信息进行消费 接下来是一个简单的demo 定义一个元素类 import lombok.Data;import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit;Data public class DelayTesk implements Delayed {//标签Idprivate String uid;//到期时间private Long timestamp;//延时信息private String data;Overridepublic long getDelay(TimeUnit unit) {long delayTime timestamp - System.currentTimeMillis();//将时间转换成毫秒这边可转可不转影响不大return unit.convert(delayTime, TimeUnit.MILLISECONDS);}Overridepublic int compareTo(Delayed o) {//针对任务的延时时间长短进行排序把延时时间最短的放在前面long differenceTime this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS);return (int)differenceTime;} } 定义一个延时队列 import java.util.concurrent.DelayQueue;public class DelayTaskQueue {/*** 这边使用单例模式进行创建保证全局队列的唯一性* 我这边使用的是双检索双校验模式*/private volatile static DelayQueueDelayTesk delayTaskQueue;private DelayTaskQueue(){}public static DelayQueueDelayTesk getDelayTaskQueue() {if (delayTaskQueue null) {synchronized (DelayTaskQueue.class) {if (delayTaskQueue null) {delayTaskQueue new DelayQueue();}}}return delayTaskQueue;} } 创建一个延时队列的生产者 import lombok.extern.slf4j.Slf4j;import java.util.concurrent.DelayQueue;//消息生产者 Slf4j public class DelayTeskQueueProducer {/*** 往延时队列中插入数据* param uid* param time* param data*/public static void setDelayQueue(String uid, Long time, String data) {//创建队列DelayQueueDelayTesk delayTaskQueue DelayTaskQueue.getDelayTaskQueue();//创建任务DelayTesk delayTesk new DelayTesk();delayTesk.setUid(uid);delayTesk.setTimestamp(time);delayTesk.setData(data);log.info(消息入队:{}, uid);boolean res delayTaskQueue.offer(delayTesk);if (res) {log.info(消息入队成功:{}, uid);} else {//如果消息入队失败这边可以写一个失败的回调函数//例如将失败的消息存入数据库写个定时任务对消息进行重写投递……log.info(消息入队失败:{}, uid);}} }定义一个延时队列的消费者 import cn.hutool.core.util.IdUtil; import lombok.extern.slf4j.Slf4j;import java.util.concurrent.DelayQueue;Slf4j public class DelayTeskQueueConsumer {public static void main(String[] args) {for (int i 0; i 10 ; i) {DelayTeskQueueProducer.setDelayQueue(IdUtil.fastUUID(), System.currentTimeMillis() i * 1000, hello world i);}int index 0;DelayQueueDelayTesk delayTaskQueue DelayTaskQueue.getDelayTaskQueue();while (index 10) {try {DelayTesk delayTesk delayTaskQueue.take();System.out.println(delayTesk.getData());} catch (InterruptedException e) {log.error(延时队列消费异常{}, e.getMessage());}}} } 结果 在控控制台中每隔1秒打印一行数据 到这差不多我们的Demo就要结束了不过可能有些同学会问你这个消费者不是是写在mian方法里的每次消费的时候都需要手动去调用这跟我直接用sleep函数实现的延时队列有啥区别呀 别急 这个只是个Demo嘛如果需要使用在项目中可以写一个监听器去实时监听该延时队列 我这边暂时就只讲3种 Timer 通过timer定时定频率去获取DelayTaskQueue中的消息 import com.study.project.delay.DelayTaskQueue; import com.study.project.delay.DelayTesk; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.DelayQueue;/*** 添加Configuration 注解自动注入实例对象并由springboot 启动 定时器执行任务。*/Configuration Slf4j public class DelayTeskQueueTimer {Beanpublic void DelayTeskQueueTimer() {log.info(监听开始);final Timer timer new Timer();DelayQueueDelayTesk delayTaskQueue DelayTaskQueue.getDelayTaskQueue();timer.schedule(new TimerTask() {Overridepublic void run() {try {DelayTesk delayTesk delayTaskQueue.take();System.out.println(delayTesk.getData());} catch (Exception e) {log.error(延时队列消费异常{}, e.getMessage());}}//第一次执行是在当前时间的一秒之后之后每隔一秒钟执行一次},1000, 1000);} } ConmandlineRunner import com.study.project.delay.DelayTaskQueue; import com.study.project.delay.DelayTesk; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Configuration;import java.util.concurrent.DelayQueue; /*** Spring Boot应用程序在启动后程序从容器中遍历实现了CommandLineRunner接口的实例并运行它们的run方法*/ Slf4j Configuration public class DelayTeskQueueTimerCommandLineRunner implements CommandLineRunner {Overridepublic void run(String... args) {log.info(CommandLineRunner监听开始);DelayQueueDelayTesk delayTaskQueue DelayTaskQueue.getDelayTaskQueue();new Thread(() -{while (true) {try {DelayTesk delayTesk delayTaskQueue.take();System.out.println(delayTesk.getData());} catch (Exception e) {log.error(延时队列消费异常{}, e.getMessage());}}}).start();} }ApplicationListener 该方法和ConmandlineRunner方法一样 都是在Spring Boot应用程序在启动后对DelayQueue进行监听 import com.study.project.delay.DelayTaskQueue; import com.study.project.delay.DelayTesk; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.ContextRefreshedEvent;import java.util.concurrent.DelayQueue;Slf4j Configuration public class DelayTeskQueueApplicationListener implements ApplicationListenerContextRefreshedEvent {Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {log.info(ApplicationListener监听开始);DelayQueueDelayTesk delayTaskQueue DelayTaskQueue.getDelayTaskQueue();new Thread(() - {while (true) {try {DelayTesk delayTesk delayTaskQueue.take();System.out.println(delayTesk.getData());} catch (Exception e) {log.error(延时队列消费异常{}, e.getMessage());}}}).start();} }当然监听的方法其实还有很多不过同学们在实现队列的时候不要觉得实现了就好了要去思考如何去保证数据的持久化保证数据不会不会丢失
http://www.hkea.cn/news/14329849/

相关文章:

  • asp网站建设教案新手学做网站 pdf 下载
  • 百度推广优化是什么?麻城seo
  • 常见网站建设公司术语网站开发前期调研
  • 官方网站建设案例开封网站制作哪家好
  • 建设网站方案ppt昆明网站建设猫咪
  • 网站建设合同首付多少钱杭州建设职业技术学院招聘信息网站
  • 做网站的客户需求seo软文外包公司
  • 上传到网站去的文档乱码响应式网站 教程
  • 张店网站制作设计公司wordpress建立ftp
  • 深圳 网站优化公司排名wordpress tag标签页
  • 帮别人做网站服务器深度苏州自媒体公司
  • 顺德做外贸网站免费网页模板源代码
  • 上海建站价格建立保密工作风险评估监测预警
  • 用网站模板给人做网站挣钱吗加强网站建设的原因
  • 三水建设局招标网站电商网站建设解决方案
  • 南京装修公司做网站万网企业网站建设
  • cms建站系统无锡名气大的网页设计
  • 购销网站建设视频百度云公司介绍网站源码
  • 中国建设部网站四库平台扬州seo博客
  • 怎么做网站自动采集数据天蝎做网站建网站
  • 为什么网站权重会掉推广公司简介
  • 九冶建设有限公司官方网站网站建站公司模板
  • 黄页88网是什么性质的网站上海做网站天锐
  • 网站开发实训的心得青海公路建设服务网站
  • 介绍做ppt高大上图表的网站品物设计集团
  • 关于我校校园网站建设的调研报告百度推广客户端下载网址
  • 云梦县建设安全网站txt怎么做pdf电子书下载网站
  • 武清做网站的网站免费建站k
  • 东宁做木耳招工人网站嘉兴seo网站建设费用
  • 可以做视频推广的网站有哪些网站要不要改版