netty:promise的简单示例

# 项目代码资源:

可能还在审核中,请等待。。。
https://download.csdn.net/download/chenhz2284/89442495

# 项目代码

【pom.xml】

<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.110.Final</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.12</version>
</dependency>

【logback.xml】

<configuration debug="false" xmlns="http://ch.qos.logback/xml/ns/logback"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ch.qos.logback/xml/ns/logbackhttps://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd"><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ::: %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>

【MyNettyPromiseTest.java】

package com.chz.myNetty.demo3;@Slf4j
public class MyNettyPromiseTest {public static void main(String[] args) throws ExecutionException, InterruptedException{NioEventLoopGroup loop = new NioEventLoopGroup();DefaultPromise<String> promise = new DefaultPromise<>(loop.next());promise.addListener(new GenericFutureListener<Future<? super String>>() {@Overridepublic void operationComplete(Future<? super String> future) throws Exception {log.info("chz >>> GenericFutureListener.operationComplete()");}});new Thread(()->{try {Thread.sleep(2000L);log.info("chz >>> 准备调用【promise.setSuccess()】");promise.setSuccess("i am finished");} catch (InterruptedException e) {throw new RuntimeException(e);}}).start();log.info("chz >>> 准备调用【promise.get()】");String result = promise.get();   // 这里在调用【promise.setSuccess】之前会被阻塞log.info("chz >>> result: " + result);}
}

# 运行与测试

运行【MyNettyPromiseTest】,输出日志如下:
在这里插入图片描述

分析:

  • 在没有调用【promise.setSuccess(…)】之前【promise.get()】会被阻塞。
  • 【promise.setSuccess(…)】被调用之后【promise.get()】马上结束阻塞结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存中的buffer和cache

一、buffer和cache是内存的一部分即占用了内存的空间 提到查看linux主机内存&#xff0c;我们总会想到free命令也一般用该命令&#xff0c;如下面的输出&#xff1a; [rootlocalhost ~]# freetotal used free shared buff/cache available Mem: …

利用Cloudera Manager API来监控CDH大数据组件并异常重启实例

一、背景 CDH在生产环境遇到的问题会是千奇百怪,有的大数据组件莫名其妙就挂掉了,大多时候可以通过登录ClouderaManager进行操作,通常这种操作方式并无大问题,但若是某个时刻出现异常,特别是放长假时,而管理人员又不方便登录ClouderaManager,那故障就会持续一段时间,严…

MyBatis进行模糊查询时SQL语句拼接引起的异常问题

项目场景&#xff1a; CRM项目&#xff0c;本文遇到的问题是在实现根据页面表单中输入条件&#xff0c;在数据库中分页模糊查询数据&#xff0c;并在页面分页显示的功能时&#xff0c;出现的“诡异”bug。 开发环境如下&#xff1a; 操作系统&#xff1a;Windows11 Java&#…

CAN测试工具——BUSMASTER

文章目录 推荐理由一、菜单栏Transmit WindowDiagnostics二、Tools推荐理由 BUSMASTER是一个用于设计,监测,分析与模拟CAN网络的开源的开放式总线PC软件. 1) 可以和十几种常用CAN总线硬件兼容。比如:IXXAT、PEAK、Kvaser、CANcase XL等。 2)免费,开源 https://rbei-etas.g…

乐鑫ESP32相关资料整理

乐鑫科技 Espressif 介绍 乐鑫科技 Espressif AIoT 领域软硬件产品的研发与设计&#xff0c;专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的无线通信 SoC&#xff0c;现已发布 ESP8266、ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列芯片、模组和开发板。 Espressif Sy…

C++ virtual public(虚继承类)

这个"virtual"有什么作用&#xff1f; 由于C支持多重继承&#xff0c;所以对于一个派生类中有几个直接父类&#xff0c;而几个直接父类中有几个可能分别继承自某一个基类&#xff08;就是父类的父类&#xff09;&#xff0c;这样在构造最终派生类时&#xff0c;会出现…

【Vue3】插槽的使用及其分类

历史小剧场 后来我才明白&#xff0c;造反的宋江&#xff0c;和招安的宋江&#xff0c;始终是同一个人。 为什么要造反&#xff1f; 造反&#xff0c;就是为了招安。 ----《明朝那些事儿》 概念 在日常的项目开发中&#xff0c;当我们在编写一个完整的组件时&#xff0c;不可避…

【动态规划】0-1背包问题

【动态规划】0-1背包问题 题目:现在有四个物品&#xff0c;背包总容量为8&#xff0c;背包最多能装入价值为多少的物品? 我的图解 表格a【i】【j】表示的是容量为j的背包装入前i个物品的最大价值。 拿a【1】【1】来说&#xff0c;它的值就是背包容量为1&#xff0c;只考虑…

我的创作纪念日256days

机缘 当我回望走过的路&#xff0c;心中有无数的故事在跳跃&#xff0c;试图穿过指尖&#xff0c;流淌在文字之间。成为一名创作者&#xff0c;对我来说并非一蹴而就的决定&#xff0c;而是一场始于内心深处的召唤。那是一种对表达的渴望&#xff0c;对美的追求&#xff0c;最重…

【探索Linux命令行】从基础指令到高级管道操作的介绍与实践

目录 man 指令&#xff08;说明&#xff09; 介绍 cp 指令&#xff08;复制&#xff09; ​编辑 mv 指令&#xff08;移动&#xff09; ​编辑 cat 指令&#xff08;类似cout&#xff09; less&#xff08;查找&#xff09; head & tail&#xff08;打印&#xff…

[数据集][目标检测]减速区域检测数据集VOC+YOLO格式1654张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1654 标注数量(xml文件个数)&#xff1a;1654 标注数量(txt文件个数)&#xff1a;1654 标注…

cap原理是什么?

CAP原理&#xff0c;也被称为CAP定理或Brewer定理&#xff0c;描述了在分布式系统中&#xff0c;一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition tolerance&#xff09;这三个特性只能同时满足其中…

鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)

3、MMU汇编代码 在arch\arm\arm\include\arm.h文件中&#xff0c;封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。 3.1 CP15 C2 TTBR转换表基地址寄存器 代码比较简单&#xff0c;结合下图&#xff0c;自行查看即可。该图来自《ARM Cortex-A9 Tec…

Java学习 - MySQL数据存储过程 + 函数 + 触发器介绍实例

存储过程 存储过程的概念和优点 概念&#xff1a;存储过程是一组预先编译好的SQL语句的集合类比&#xff1a;存储过程类似于 Go 中的函数优点&#xff1a;提高代码重用性&#xff0c;简化操作&#xff0c;减少编译次数 创建存储过程 创建语法 DELIMITER $ # 不能加分号CREA…

JavaFX HBox

JavaFX API具有将UI控件显示到场景图上的布局类。HBox布局类将JavaFX子节点放在水平行中。 新的子节点附加到右侧的末尾。默认情况下&#xff0c;HBox布局尊重子节点的首选宽度和高度。 当父节点不可调整大小时&#xff0c;例如Group节点&#xff0c;HBox的行高度设置为子节点的…

【车载开发系列】专业术语汇总(CAN网络管理关联)

【车载开发系列】专业术语汇总&#xff08;CAN网络管理关联&#xff09; 【车载开发系列】专业术语汇总 【车载开发系列】专业术语汇总&#xff08;CAN网络管理关联&#xff09; 英文缩写英文全称中文说明ACKAcknowledge应答-SNISource Node Identifier源节点标识符-CBVControl…

RSS Channel 元素

RSS Channel 元素 概述 RSS(Really Simple Syndication)是一种广泛使用的消息来源格式,允许用户订阅并接收他们感兴趣的内容更新。RSS文档通常包含一个或多个<channel>元素,每个元素代表一个特定的内容源。本文将详细探讨<channel>元素的结构和用途,以及如何…

【工作】计算机行业相关的十六类工作简介

本文简单介绍了计算机行业相关的工作类别&#xff0c;共16种&#xff0c;包括常见招聘要求与平均工资。平均工资信息来源&#xff1a;米国企业点评职场社区glassdoor&#xff08;https://www.glassdoor.com/index.htm&#xff09; &#xff08;一&#xff09;软件工程师 软件…

003、浅谈Neo4j的数据模型

Neo4j 数据模型概述 Neo4j 是一种图数据库&#xff0c;采用图数据模型来存储和管理数据。这个模型由节点&#xff08;nodes&#xff09;、关系&#xff08;relationships&#xff09;和属性&#xff08;properties&#xff09;组成&#xff0c;特别适合表示复杂的连接关系和网…

图书馆图书可视化分析+大屏

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 摘要前言技术栈开发环境数据说明 正文数据获取数据存储数据清理数据分析数据挖掘关联规则二分类预测 数据可视化书籍价格区间柱状图书籍评…