异步通知 BlockingQueue 有可用项目

2024-03-05

我需要一个Object当某些情况时得到异步通知BlockingQueue有一件物品要赠送。

我在 Javadoc 和网络上搜索了一个预制的解决方案,然后我最终得到了我的一个(也许是幼稚的)解决方案,如下:

interface QueueWaiterListener<T> {
    public void itemAvailable(T item, Object cookie);
}

and

class QueueWaiter<T> extends Thread {

    protected final BlockingQueue<T> queue;
    protected final QueueWaiterListener<T> listener;
    protected final Object cookie;

    public QueueWaiter(BlockingQueue<T> queue, QueueWaiterListener<T> listener, Object cookie) {
        this.queue = queue;
        this.listener = listener;
        this.cookie = cookie;
    }

    public QueueWaiter(BlockingQueue<T> queue, QueueWaiterListener<T> listener) {
        this.queue = queue;
        this.listener = listener;
        this.cookie = null;
    }

    @Override
    public void run() {
        while (!isInterrupted()) {
            try {
                T item = queue.take();
                listener.itemAvailable(item, cookie);
            } catch (InterruptedException e) {
            }
        }
    }
}

基本上,有一个线程阻塞take()每次回调监听器对象的队列操作take()操作成功,可选择发回一个特殊的cookie对象(如果需要,请忽略它)。

问题是:有没有更好的方法来做到这一点?我是否犯了一些不可原谅的错误(无论是在并发/效率和/或代码整洁方面)?提前致谢。


也许你可以将一些子类化BlockingQueue(例如ArrayBlockingQueue or LinkedBlockingQueue或者你正在使用的任何东西),添加对听众的支持并执行

@Override
public boolean add(E o) {
    super.add(o);
    notifyListeners(o);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步通知 BlockingQueue 有可用项目 的相关文章

  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 使用 ANTLR 为 java 源代码生成抽象语法树

    如何使用 ANTLR 从 java src 代码生成 AST 有什么帮助吗 好的 步骤如下 前往ANTLR站点 http www antlr org 并下载最新版本 下载Java g和JavaTreeParser g文件来自here htt
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • 如何在 Node.js 中将函数/回调传递给子进程?

    假设我有一个parent js包含一个名为parent var childProcess require child process var options someData a 1 b 2 c 3 asyncFn function dat
  • 如何将“ignore”类与tensorflow对象检测API一起使用?

    我已经训练了张量流对象检测模型 对于num steps 50000 using SSD mobilenet v1 在自定义数据集上 我有 email protected cdn cgi l email protection 0 98 和lo
  • 没有span标签的微数据

    我有一个网站 设计者将 CSS 应用于基本 标签 这使得该标签对于微数据标记实际上毫无用处 除非我希望所有文本都是蓝色 粗体 并且比正常情况大 125 我可以使用其他标签吗 我知道我可以使用 但我实际上希望内容出现 而且必须写两次似乎有点过
  • 将对象属性限制为 keyof 接口

    此代码将无法编译 interface IFoo a number type TFoo keyof IFoo type OFoo key TFoo any let obj OFoo a 1 我想要实现的是 obj 只能与具有有效属性的对象一起
  • Bootstrap 弹出窗口被裁剪到包含 div 的范围

    我希望将弹出窗口包含在可折叠 div 中 http jsfiddle net nathan9 qgyS7 http jsfiddle net nathan9 qgyS7 然而 弹出窗口似乎仅限于 div 的范围 有没有办法防止剪辑 a hr
  • OpenCV - 校准鱼眼镜头误差(病态矩阵)

    我正在尝试按照这些说明校准鱼眼镜头https medium com kenneth Jiang calibrate fisheye lens using opencv 333b05afa0b0 https medium com kennet
  • 在 PyQt PushButton 单击期间发送附加变量[重复]

    这个问题在这里已经有答案了 我是 Python 和 PyQt 的新手 这是我的第一个应用程序 目前 当单击按钮时 toggleLED checks self LedOn来决定是否打开LED class Screen QWidget def
  • jquery - 获取html表的指定列中的元素

    使用 jquery 我想获取 html 表的指定列中的所有元素 请注意 它可以多于一列 例如 如果我有以下 html 表 table tr td a td td b td td c td tr tr td 1 td td 2 td td 3
  • 使用 rvest 抓取带有 span 的 html 表

    我正在使用 rvest 提取以下页面中的表 https en wikipedia org wiki List of United States presidential elections by popular vote margin ht
  • 动态 Servicefabric 设置和覆盖

    有没有办法完全不告诉服务有关设置 而只在应用程序级别提供它们 我仍然对 servicefabric 配置的工作方式不满意 据我所知 我必须在服务的 settings xml 中指定所有可能的配置值 然后我可以覆盖应用程序的 Applicat
  • elasticsearch:将“应该”变成过滤器

    我想使用过滤器进行搜索 排除与条件或另一个条件不匹配的结果 我尝试在过滤器中执行 应该 操作 但失败了 POST my index search query bool filter should match type1 title sear
  • 为什么抽象方法有时需要重写?

    基于一个上一个问题 https stackoverflow com questions 66182368 stack modification traits in scala not working 下面的代码编译OK trait Logg
  • 打开数据库图表后 SQL Server Management Studio 崩溃

    我在 SQL Server 2018 SSMS 18 1 的本地服务器中有 2 个现有数据库图 打开它时 应用程序变得 无响应 然后崩溃 没有任何错误 过去 7 天运行良好 意思是 18 如果您安装了 SSMS 版本 18 0 则数据库图已
  • Facebook 延迟深度链接在 iOS 上不起作用

    当我使用 Facebook 时一切正常应用广告助手 https developers facebook com tools app ads helper 深度链接测试器 应用程序将从 App Store 下载 URL 将被正确获取和处理 但
  • 如何找到 MySQL root 密码

    我无法弄清楚我的 MySQL root 密码 我怎样才能找到这个 是否有存储此密码的文件 我正在关注这个但我本地没有 directadmin 目录 感谢 thusharaK 我可以在不知道旧密码的情况下重置root密码 在 ubuntu 上
  • 如何在使用 PhoneGap/Cordova 构建的 Android 应用程序中单击按钮时播放音频?

    我正在构建一个类似音板的基本应用程序 其中有一些播放声音的按钮 我正在使用 PhoneGap Cordova 并使用 PhoneGap Build 服务将代码编译为 APK 起初 我使用简单的 HTML5
  • 如何在 %width div 内保持图像长宽比?

    很抱歉再次询问这个问题 但我的搜索没有显示任何我能够实现的内容 我在 div 中有一个具有以下样式的图像 div class thumb grid 6 img src img test2 jpg alt flavin div grid 6
  • 本月第几周

    我正在尝试获取该月的周数 这就是我想要做的 x date V echo x is x y date V d date Y m01 echo y is y week of month x y echo week of month is wee
  • 最有效的不区分大小写的 grep 用法是什么?

    我的目标是匹配属于 Yahoo 的电子邮件地址 域家族 在 nix 系统 我将使用 Ubuntu 中 这些匹配模式的方法中的任何一种都有哪些优点和缺点 如果还有我无法想象的另一种更优雅的解决方案 请分享 他们来了 Use grep有选项 i
  • 异步通知 BlockingQueue 有可用项目

    我需要一个Object当某些情况时得到异步通知BlockingQueue有一件物品要赠送 我在 Javadoc 和网络上搜索了一个预制的解决方案 然后我最终得到了我的一个 也许是幼稚的 解决方案 如下 interface QueueWait