无法维护java多线程中生产者任务的顺序

2023-12-02

我正在编写一个多线程应用程序,其中有 n 个生产者尝试将元素添加到共享资源。我想维护生产者在共享资源中生成元素的顺序。

例如,我的共享资源是 SynchronizedQueue,P1、P2、P3、P4 将按照 p1、p2、p3、p4 的顺序生成新元素,在此期间 P5 生产者将其元素添加到队列中,因此 P1, P2、P3、P4将等待锁定。一旦 P5 释放锁,P1-4 中的任何一个都将获取锁,因此我们失去了元素的顺序。

有没有办法维持等待锁的元素的顺序?根据我的理解,这是不可能的,但我想检查是否可以通过编程来实现。


我能想到的一种方法是创建一个包装类,PriorityP其中有字段int priority and P value.

然后为每个线程分配一个优先级(int)并且线程给出结果 aPriorityP具有适当的优先级和值。

现在,您可以使用PriorityBlockingQueue而不是你的SynchronizedQueue,并实施Comparator界面中的PriorityP class.

当您这样做时,每当线程将其值输入队列时,它就会自动放入正确的位置。

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

无法维护java多线程中生产者任务的顺序 的相关文章

  • 如何在 Android 中检查与配对设备的蓝牙连接状态

    我开发了一个蓝牙应用程序 它将连接到配对的设备并发送消息 但我必须先测试连接 我尝试了很多选择 但没有一个效果很好 那么您能给我发送任何可以做到这一点的代码示例吗 我创建了一个线程 但无法获得良好的连接状态来构建 if 函数 这是代码 pa
  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • Java 9 中可以使用提前编译吗?

    As per JEP 295 http openjdk java net jeps 295 任何 JDK 模块 类或用户代码的 AOT 编译都是实验性的 JDK 9 中不支持 要使用 AOT 化的 java base 模块 用户必须编译该模
  • 获取TextView的高度

    我有一些文字将被放入TextView 我这样做是使用setText 现在我需要找到文本在文本中占据的行数或高度TextView 我尝试使用getHeight 但它总是返回 0 无论如何 有没有办法获得文本中存在的文本的高度TextView
  • DateTimeFormatter.parseLocalDate 抛出 UnsupportedOperationException

    该API用于解析本地日期 http joda time sourceforge net apidocs org joda time format DateTimeFormatter html parseLocalDate 28java la
  • MongoDB:尝试从 JSON 读取 Long 导致 java.lang.Integer 无法转换为 java.lang.Long

    我有一个代码可以从 MongoDB 读取特定格式的数据 我需要测试一下 为此 我使用要测试的数据创建一个 JSON id ObjectId 57552e32e4b0839ede67e0af serial 574000690 startDat
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 使用 include 进行 JAXB 剧集编译不起作用

    我有 2 个模式 A B 我在 B 中重用了一些 A 元素 我不使用命名空间 我在用着
  • Akka 和 spring 配置

    我正在尝试将 akka 与 spring 结合起来 但没有成功 基本上 我的应用程序似乎不习惯读取 akka 模式 具有架构的 service context xml 的一部分
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • 将带有时区的 Joda-Time `DateTime` 转换为没有时区的 DateTime?

    Given a DateTime http www joda org joda time apidocs org joda time DateTime html例如2015 07 09T05 10 00 02 00 using 乔达时间 h
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet
  • 使用 Hibernate 防止无限循环数据检索

    我想知道 想象一个场景 例如 POJO public class User private String userName private String name private String surname private List

随机推荐

  • Scala 编译 OptionBuilder 时出错

    我正在使用 Apache commons cli 1 2 进行命令行解析 我的代码中有以下内容 import org apache commons cli OptionBuilder OptionBuilder withLongOpt db
  • 为什么 ghci 找不到我尝试编译的 hs 文件?

    我是第一次学习 Haskell 我不明白为什么 ghci 找不到我正在尝试编译的文件 特别是因为我保存了文件 这是我的文件 import System IO trueAndFalse True False 现在这就是我在编译器中运行的内容
  • 防止双击按钮

    我一直遇到用户双击网络应用程序上的操作按钮的问题 这意味着重复的记录被添加到我的数据库中 有时用户会被收取两次费用 因为该操作运行了两次 在 ASP NET 中防止双击的最佳方法是什么 我发现您在面对未启用 JavaScript 的用户时对
  • 如何在 Pyqt5 setcentralWidget 中取回我的主窗口? [复制]

    这个问题在这里已经有答案了 如何取回我的主窗口 从我的主窗口 如果我按 打开左边的盒子 按钮或 打开右边的盒子 按钮 它起作用了 同时 如果我按下 Back 从左框按钮 什么也不会发生 如何获取主窗口 简单来说 我想知道如何设置布局和删除布
  • Room 为离线应用程序创建备份的最佳方法?

    所以我可以说正在使用非常复杂的数据库many to many数据库设计与foreign keys并连接表 它是Room数据库 我想为其创建备份系统 因为它是离线应用程序 我需要导出数据库并将其存储到谷歌驱动器的应用程序文件夹中 最近几天我读
  • 搜索按钮上的进度条

    我有这个 C 代码来显示进度条 public partial class FormPesquisaFotos Form public FormPesquisaFotos InitializeComponent private void Fo
  • switch 语句的逻辑部分或 case 部分如何?

    如果您有一个 switch 语句并希望在值为一个值时运行某些代码or另一个你怎么做 以下代码始终进入默认情况 include
  • Java Paths.get .... readAllBytes(path)) 不适用于相对路径

    我是 Java 新手 正在尝试构建 FX 应用程序 我的功能之一旨在用其他字符串替换某些字符串 只要我定义目标文件的绝对路径 该脚本就可以正常工作 但当我使用相对路径时 该脚本就会中断 问题出在 readAllBytes 方法中 该方法仅适
  • JPA - 可以在不提供可选参数的情况下调用存储过程吗?

    我正在调用带有许多可选参数的第三方存储过程 它位于 MS SQL Server 2008 R2 中 如下所示 procedure dbo pTest ReportDate varbinary max out Optional1 varcha
  • “?”附近的语法不正确: Nhibernate 生成的查询

    我在 Nhbernate 中使用位置参数时遇到问题 Criteria GroupProperty 正在发出带有命名变量和位置变量的 SQL 这个说法 session CreateCriteria typeof MatchStageFrom
  • 如何将 Matlab 函数的输出分配给单行中的变量?

    matlab中有没有一种方法可以将matlab中函数的输出分配给单行内的向量 例如 此函数应分配周长和面积值 function p a square geom side p perimeter square side a side 2 p
  • 分两列打印

    我们应该形成一个出现 108 次的名称数组 我们应该在左列中包含名称 1 54 在右列中包含名称 55 108 当一页有 108 个名称后 我们初始化数组并重新开始 我的代码的输出显示打印的名称 1 54 并且名称 55 108 不是位于同
  • Angular 2-ngModel 中的更改未反映在下拉列表中

    所以我有一个非常简单的场景 其中在下拉列表更改时显示确认弹出窗口 如果用户选择取消 我需要将下拉值恢复为旧值 我认为我做得正确 甚至在 DOM 中 ngModel 的值与select正在反映 但不知何故 它并没有恢复显示中的选定值 这是我的
  • 以编程方式获取框架 ID

    有人知道是否有办法以编程方式获取当前框架 ID 是的 您可以在 Play 类上获取该属性 Play id
  • 离散小波变换 Matlab

    我正在尝试使用 Matlab 小波工具箱中提供的函数来创建图像的多级离散小波分解 提取系数 操作它们 并将它们重新组合回图像中 我尝试使用许多函数 但它们似乎都不能满足我的需要 以下是执行此操作的步骤 使用wavedec2将图像分解为 C
  • 在 C# 中,这段带有“get”的代码是什么意思?

    我是 C 新手 private string m public string M get return m C 中的这种 getter setter 是否像 Java 一样 这部分是一个字段 private string m 这部分是一个只
  • 将数组/对象树的键转换为小写

    我目前正在优化一个 PHP 应用程序 发现一个函数被调用了大约 10 20k 次 所以我想我应该从那里开始优化 function keysToLower obj if is object obj is array obj return ob
  • 从列表中随机选择

    我在 Excel 工作表 A1 B115 中有一个项目列表 目前我可以输入 10 个变量 从列表中检索正确的数据 现在代码 C1 1 运行A1 A115并检查值是否在1000 2000之间 如果是这样 请将 B 值复制到某处 C2 1 运行
  • 如何在 WooCommerce 中对自定义购物车费用进行征税

    准确地找到了我正在寻找的代码片段 无论价格如何 都可以为每个单独的购物车项目添加固定费用金额 这个网站是卖轮胎的 所以每个轮胎都会充电3 这是我正在使用且有效的代码 add action woocommerce cart calculate
  • 无法维护java多线程中生产者任务的顺序

    我正在编写一个多线程应用程序 其中有 n 个生产者尝试将元素添加到共享资源 我想维护生产者在共享资源中生成元素的顺序 例如 我的共享资源是 SynchronizedQueue P1 P2 P3 P4 将按照 p1 p2 p3 p4 的顺序生