利用DelayQueue与Delayed 完成异步延时操作
@Testpublic void Juc() throws InterruptedException {System.out.println("马上输出");DelayQueue<Delayed> delayeds = new DelayQueue<>();new Thread(() -> {delayeds.offer(new MyDelayedTask("task1", 3000));System.out.println("异步");try {Delayed take = delayeds.take();System.out.println("异步三秒后输出");} catch (InterruptedException e) {e.printStackTrace();}}).start();System.out.println("主线程");while (true){}}class MyDelayedTask implements Delayed {private String name;private long start = System.currentTimeMillis();private long time;public MyDelayedTask(String name, long time) {this.name = name;this.time = time;}@Overridepublic long getDelay(TimeUnit unit) {return unit.convert((start + time) - System.currentTimeMillis(), TimeUnit.MILLISECONDS);}@Overridepublic int compareTo(Delayed o) {MyDelayedTask o1 = (MyDelayedTask) o;return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));}}
1.延迟任务实现delay接口,重写getDalay与compareTo方法
2.DelayQueue创建延迟队列,创建线程,队列添加延迟任务,当队列内任务没有take的时候线程会堵塞
利用DelayQueue与Delayed 完成异步延时操作相关推荐
- php 超时支付取消订单,php利用workerman的定时器实现延时操作(订单支付不成功后一定时间未支付自动取消订单)...
延时操作个人目前接触最多的场景是用户下单后一定时间未支付自动取消订单,传统的做法是采用定时任务定时扫描数据库超时订单或者利用客户端的请求每次请求去检测一次是否有超时订单,这些方法我始终感觉不是很好,所 ...
- 2.linux系统基础笔记(延时操作、实时系统中的定时器、事件)
延时操作 延时操作是操作系统中经常遇到的一种情形.延时的原因很多,有的时候是为了等待外设芯片处理结束,有的时候是为了暂时释放cpu的使用权,有的就是为了希望在一段时间获取资源,如果没法在单位时间内获取 ...
- python 循环实现延时_Python延时操作实现方法示例
本文实例讲述了Python延时操作实现方法.分享给大家供大家参考,具体如下: 在日常的开发中,往往会遇到这样的需求,需要某一个函数在一段时间之后才执行以达到某种特定的效果.此时,我们就需要某种机制,使 ...
- Kafka原理--时间轮(延时操作)
原文网址:Kafka原理--时间轮(延时操作)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Kafka的时间轮的原理. Kafka没有延迟队列功能供用户使用,本文介绍的延时操 ...
- python延时us函数_Python延时操作实现方法示例
本文实例讲述了Python延时操作实现方法.分享给大家供大家参考,具体如下: 在日常的开发中,往往会遇到这样的需求,需要某一个函数在一段时间之后才执行以达到某种特定的效果.此时,我们就需要某种机制,使 ...
- python中延时函数_Python延时操作实现方法示例
本文实例讲述了Python延时操作实现方法.分享给大家供大家参考,具体如下: 在日常的开发中,往往会遇到这样的需求,需要某一个函数在一段时间之后才执行以达到某种特定的效果.此时,我们就需要某种机制,使 ...
- xml 和android脚本之家,Android利用Document实现xml读取和写入操作
本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型.是一种允许用户对自己标 ...
- ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法
ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法 目录 ECS的PAI的简介 优质.丰富的机器学习算法 ECS的PAI的操作攻略 ML案例 ECS的PAI的简介 阿里云机器学习 ...
- Kafka科普系列 | 轻松理解Kafka中的延时操作
欢迎跳转到本文的原文链接:https://honeypps.com/mq/kafka-basic-knowledge-of-delay-operation/ 本文起源于之前去面试的一道面试题,面试题大 ...
最新文章
- OpenCV学习笔记2---命名规约
- beego1---beego,bee环境配置
- Linux服务器IP下了,linux – DDOS攻击下的服务器 – 如何查找IP?
- switch变量的作用 域问题
- golang中的栈(LeetCode刷题)
- mysql执行的list_CMD如何进入Mysql命令并执行相关查询
- Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
- mfc-PlaySound
- Linux 相关术语_002
- 【java】监听器、box和JFrame的应用
- 2022新版Git教程 从入门到实战(二)Git本地仓库的使用
- CRC循环校验码的计算
- Python优化算法06——人工鱼群算法
- NetMeeting的使用
- 计算机信息管理专科,计算机信息管理大专简历范文
- 利用STM32F103精确控制步进电机
- SVO2安装,编译和运行q
- 数据分析案例1.0——药品销售分析
- 135微信编辑器html模式,135微信编辑器如何使用 135微信编辑器使用方法教程
- Android无限流量统计,无限流量套餐国内也有 但并没什么用
热门文章
- 研究热点丨当坏死性凋亡碰撞肿瘤免疫
- Part5 第一个MapGIS云GIS软件程序
- 旧调重弹Hibernate与Ibatis区别--深入架构设计
- 外汇交易提醒:多位美联储官员支持进一步加息50基点,美元走强,等待通胀数据指引
- 小米8SE 线刷兼救砖_解账户锁_纯净刷机包_教程
- monkey开源工具Linux,wxPython制作跑monkey工具(Python3)
- Xcode 7 下载地址
- Matploblib与Pyechars应用
- 文明6游戏 linux,《文明6》正式支持Linux/SteamOS 但不支持Intel核显和A卡
- 老司机告诉你,如何同时运营更新 150 款 App? | 宝宝巴士 CTO 蔡泸炜 1