ThreadPool不按顺序运行任务

2023-12-25

我正在使用Executor具体框架Executors.newCachedThreadPool();
我有一个清单Runnable例如100.
前 50 个每个创建一个值(存储在列表中)以供后 50 个使用。
我想如果我通过了Runnable是在executor.execute()按照它们在列表中的顺序,它们将是 也按照同样的顺序执行。
但这并没有发生。
这些任务似乎是按随机顺序执行的,并且它们是交错执行的,而不是按顺序执行的。
这是它应该如何工作的吗?有办法解决这个问题吗?

Thanks


您需要分两批提交作业,或者以其他方式创建明确的“发生之前”关系。建议构建两批作业并使用invokeAll(batch1); invokeAll(batch2); The invokeAll()方法将执行所有任务并阻塞直到它们完成。您可能需要包裹您的Runnables as Callables,你可以用它来做Executors.callable(Runnable r)。 (@Cameron Skinner 击败了我,让我获得了一些代码示例,请参阅该答案以了解更多信息...)

执行器的全部目的是抽象执行的细节,因此除非明确说明,否则不能保证顺序。如果您想要严格顺序执行,请在您正在运行的线程中执行(最简单),在单线程执行器中执行,alaExecutors.newSingleThreadExecutor(),或显式同步任务。如果您想执行后者,您可以使用屏障或锁存器,并将相关任务块放在屏障/锁存器上。您还可以实现第一个任务块Callable, 返回Future,并让相关任务调用myFuture.get()这将导致它们阻塞,直到返回结果。

如果您详细说明您的具体应用,我们也许能够提供更具体的帮助。

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

ThreadPool不按顺序运行任务 的相关文章

  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 为什么在 10 个 Java 线程中递增一个数字不会得到 10 的值?

    我不明白 a 的值为0 为什么 a 不是10 那段代码的运行过程是怎样的 是否需要从Java内存模型来分析 这是我的测试代码 package com study concurrent demo import lombok extern sl
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • 线程池,C++

    我正在使用 C 开发一个网络程序 我想实现一个 pthread 池 每当我从接收套接字接收到一个事件时 我都会将数据放入线程池中的队列中 我正在考虑创建 5 个独立的线程 并将持续检查队列以查看是否有任何传入数据需要完成 这是一个非常简单的
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • 带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

    我想知道以下两者之间的区别 MyClass class getClassLoader getResourceAsStream path to my properties and MyClass class getResourceAsStre
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve

随机推荐

  • 获取 Android ProgressBar 中 secondaryProgress 的宽度

    我有一个带有文本的进度条 其中我已经重写了 onDraw 如下所示 Override protected synchronized void onDraw Canvas canvas super onDraw canvas Paint te
  • 两个数据库之间同步

    我有一个也有 Web 界面的应用程序 要求之一是即使没有可用的互联网连接也能够在该应用程序上运行 这些数据库之间是否需要同步 这些数据库应该有相当大的磁盘空间 如果有这样的需求应该怎么做呢 我应该使用什么数据库 目标操作系统是Windows
  • Highcharts 十字准线,轴上带有标签

    是否可以使 highcharts 十字准线在单独标签中的轴上显示实际值 API 中的常规十字线示例不会执行此操作 如果我设置 tooltip crosshairs true true 它没有做我需要的事情 我需要的图表如下所示 这是在 Hi
  • MySQL Looped Join如何测试结果是否完整?

    情况 我有一个 mysql 目录表 每个目录都有一个父目录 存储为parentID 直到根目录的parentID为0为止 E g rowID 1 name Dir1 parentID 0 root directory rowID 2 nam
  • 有什么方法可以预测会话超时吗?

    有没有办法 捕获 会话超时事件 以便在 HttpSession 失效之前检索数据 我们正在实现 Filter 接口 并且在 doFilter 方法中 当会话超时时 我们在登录时存储在会话对象中的用户为 null 提前致谢 您应该能够注册Ht
  • iOS 提交问题与应用内购买

    我已经上传了包含两次应用内购买的应用程序 4 天后 我收到了此消息和 iTunes Connect 状态 您的应用内购买已被退回 您必须修改或删除突出显示的项目 两项应用内购买均以警告标志突出显示 并表示开发人员需要采取行动 关于问题是什么
  • 如何命名构造函数参数和成员变量?

    我在命名类的内部变量时不使用前缀 我知道有些这样做 但我不会开始 你为什么 辩论 我只是更喜欢这样 问题是有时在构造函数中传递相同的参数 我最终对如何命名它们感到困惑 例如 public class SampleClass private
  • 在 SignalR 中序列化/反序列化派生对象

    我将 SignalR 1 1 与 NET 客户端一起使用 我的集线器中有一个方法 它接受 BaseMessage 类的对象并将其广播给所有客户端 public void SendMessage BaseMessage message Cli
  • Android - 如何在代码中设置首选项

    我有一个 Android 应用程序 其中我的首选项位于 XML 文件中 运行良好 我现在想使用代码设置其中一个首选项 而不是显示整个首选项屏幕 我将如何执行此操作 我假设您所指的首选项是指应用程序的首选项 而不是 Android 手机设置
  • Spring Boot 与 Spring Batch 和 JPA 集成

    我正在将 Spring Boot 项目与 Spring Batch 和 Data jpa 项目集成 与作业和数据配置相关的所有内容都是正确的 除了将我的作业编写器结果保存在数据库中 在我读取文件并处理它之后 我无法将其写入 mysql 数据
  • 将整数拆分为其数字 C++

    我正在尝试自学 C 但遇到了一些障碍 问题是我需要取一个整数 将其拆分为数字并获取数字之和并显示它们 Example 输入号码 123456整数中的数字 1 2 3 4 5 6 sum 21 我已经完成了这一切 但是当我将整数撕成数字时 我
  • 如何在android中隐藏光标的特定行

    我有一个光标 它有 40 行 我想在用户选中复选框时隐藏一些行 一种方法是在游标上再次运行查询 但这对我没有帮助 因为条件是由Java完成的 计算余额 有很多逻辑 我需要一些东西来获取当前行 并返回它是否可以显示 任何帮助将不胜感激 我继承
  • 从 ASP.NET 中的代码隐藏推进向导

    我的页面上有一个向导 它有一个 下一步 按钮 当单击页面上的另一个按钮时 我想从代码隐藏中 单击 该按钮 进一步来说 我的页面上有一个按钮有两个功能 单击它后 在回发中 它要么设置重新加载页面并显示弹出窗口所需的代码 要么在认为不需要弹出窗
  • 如何在sql server中的计算字段上设置外键约束?

    表 A 有一个名为 Computed1 的计算字段 它是persisted并且不为空 此外 它总是计算出 char 50 表达式 它也是唯一的并且具有唯一的键约束 表 B 有一个字段 RefersToCompulated1 它应该引用有效的
  • 是否可以使用VBA添加重复部分内容控制部分?

    我已经创建了Word模板重复部分电流控制 RSCC 含有其他内容控制 我还有 Excel 工作簿 其中包含应转到提到的 Word 模板的信息 我想做的事情是创建宏 该宏将使用 Excel 工作簿中选定行的信息填充 Word 模板 每行到新的
  • 如何同时有效地读取两个 BLE 设备的温度?

    首先 我正在使用RxAndroidBLE http polidea github io RxAndroidBle 管理我的 BLE 连接的库 我有两个我想同时读取两者的温度 例如 我想每 500 毫秒读取两个设备的温度 并将其在两个 Tex
  • 在 Firebase 中查询父节点的所有实例中的特定子节点

    我试图弄清楚如果可能的话如何在 Firebase 中父节点的所有实例中查询专门命名的子节点 可以假设查询的所有父节点中都有这个专门命名的子节点 在这个例子中 uid是每个用户的唯一标识符 我正在尝试获取以下列表displayNames us
  • 可以从 PHP 类中的 include() 文件访问 $this 吗?

    我正在开发一个 WordPress Widget 所有示例都混合有巨大的 HTML PHP 块 因此无法阅读 因此为了尝试清理内容 我想将所有 HTML 渲染移至单独的PHP 文件将是include d 这样做的技巧是 我包含的文件似乎无权
  • 如果 JQuery Mobile 内容溢出,如何通过滚动保持面板高度固定

    我有一个带有固定页眉和固定页脚的页面 内容的高度也固定为窗口的高度 该文档有一个面板 其内容可能会长于窗口 内容的高度 当这种情况发生时 文档的高度就会改变 但我需要在没有滚动条的情况下保持文档的高度固定 面板应该改为滚动条 例子 http
  • ThreadPool不按顺序运行任务

    我正在使用Executor具体框架Executors newCachedThreadPool 我有一个清单Runnable例如100 前 50 个每个创建一个值 存储在列表中 以供后 50 个使用 我想如果我通过了Runnable是在exe