空着身体奔跑,永远奔跑

2024-01-07

我构建以下演示代码来测试 java.util.concurrent.CompletableFuture.runAsync 函数:

import java.util.ArrayList;
import java.util.List;

public class TestClass {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        java.util.concurrent.CompletableFuture.runAsync(    () ->{startCall(1);});
        java.util.concurrent.CompletableFuture.runAsync(    () ->{startCall(2);});
        java.util.concurrent.CompletableFuture.runAsync(    () ->{startCall(3);});
        //Add sleep if case mainthread is to fast
        Thread.sleep(1000);
        while (!RunningTasks.isEmpty());
        System.out.println("Shutting down");
    }

    private static List<String> RunningTasks=new ArrayList<String>(); 

    private static void startCall(int cn) {

        RunningTasks.add("TASK"+cn);

        int sleeptime = (int) (Math.random()*10*1000);

        System.out.println("Sleeptimer: "+sleeptime+" for instance: "+cn);
        try {
            Thread.sleep(sleeptime);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Task "+cn+" finished");
        RunningTasks.remove("TASK"+cn);
        System.out.println("RunningTasks: "+RunningTasks.size() +" is empty? "+RunningTasks.isEmpty());
    }       
}

如果我在 Eclipse 中以正常模式运行此代码(因此只需点击运行),一切都会按预期工作,而 while 循环似乎永远不会真正停止,意味着“关闭”永远不会被打印。

如果我在调试模式下运行代码并在条件上设置断点RunningTasks: 0 为空?真的被打印出来, while 检测到条件为假并退出。

如果我添加一些代码,例如将 sysout 命令放入 while 循环中,它也会按预期退出。

我错过了什么或者这确实是一个 Java 错误吗?


运行代码时,程序可能会得到优化。因此,您的计算机可能会缓存 while 循环中的条件结果。如果你想阻止这种缓存,你可以这样写:

private static volatile List<String> RunningTasks=new ArrayList<String>(); 

The keyword volatile告诉计算机不要缓存结果,以便您真正查找结果RunningTasks.isEmpty()在每次迭代中不使用缓存值。

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

空着身体奔跑,永远奔跑 的相关文章

  • Java - 为什么不允许 Enum 作为注释成员?

    It says 原始 String Class an Enum 另一个注释 上述任何一个的数组 只有这些类型才是合法的 Annotation 成员 为什么泛型 Enum 不能成为 Annotation 的成员 例如 Retention Re
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • docker安装问题安装后找不到文件

    我在 ubuntu 14 04 上安装了 docker 守护进程正在运行 但当我跑步时docker ps a 我收到这个错误 bash usr local bin docker No such file or directory 我该如何解
  • JavaFX CSS 动态样式

    在提问之前 我在网上搜索并搜索了我的问题的答案 但找不到类似的内容 我希望我的应用程序用户能够从 JavaFX ColorPicker 中选择颜色 并根据他们的选择更新整个应用程序窗口颜色 按钮颜色 字体等 我的应用程序中有很多屏幕 我真的
  • 如何打印 TensorFlow 和 Keras 损失函数中的中间变量?

    我正在编写一个自定义目标来训练 Keras 带有 TensorFlow 后端 模型 但我需要调试一些中间计算 为了简单起见 假设我有 def custom loss y pred y true diff y pred y true retu
  • 如何使用 HttpClient 改善缓慢的 DNS?

    我有一个针对特定域的请求 需要很长时间才能完成 平均 22 秒 请求本身不会返回大量数据 var httpClient new HttpClient instantiated at app start and reused var requ
  • WooCommerce 3.0 结帐期间出现“不应直接访问属性”问题

    我的日志显示了很多以下消息 order total 被错误调用 不应直接访问订单属性 此消息是在 3 0 版本中添加的 它会为订单上的每个属性重复该消息 这些消息的原因是什么 我应该采取什么措施来纠正它们 WooCommerce 3 0 修
  • C++:新手初始化列表问题

    这里是新手 我正在查看公司代码 看起来类 A 中没有成员变量 但在 A 的构造函数中它初始化了对象 B 即使类 A 不包含任何 B 类型的成员变量 或根本不包含任何成员变量 我想我还不太明白 甚至无法提出问题 所以这是怎么回事 我的直觉是
  • ASP.Net MVC - 捕获某些 URL 进行 301 重定向

    我正在从旧的网站设计转向具有新 URL 的新设计 以前的所有页面名称都是名为 PageXX html PageX html Index html 的静态文件 其中 X 是数字 我的网站现在是动态的 但我想捕获这 3 个传入 url 然后尝试
  • Java - 如何根据元素的属性分隔列表

    我有一个要对其执行操作的对象列表 然而 我首先需要将列表分成单独的列表 以便具有相同parentID的所有项目都在同一个列表中 然后分别对每个列表执行操作 原因是该操作将对象的parentID作为范围 根据此处的要求 根据元素的给定属性分隔
  • 文件上传以及 Jersey Restful Web 服务中的其他对象

    我想通过上传图像和员工数据来在系统中创建员工信息 我可以使用球衣通过不同的休息时间来做到这一点 但我想在一次休息中实现这一目标 我在下面提供了结构 请帮助我在这方面该怎么做 POST Path upload2 Consumes MediaT
  • Firebase 无法将检索到的数据保存到 ArrayList

    检索数据有效 但我无法将检索到的数据保存到 ArrayList 中 在 onDataChanged 方法之后 ArrayList profile 似乎有 2 个值 但在 return 语句中它有 0 static List
  • MVC 网格的 Kendo UI 如何隐藏 ID 列

    我想隐藏 Kendo 网格的 ID 列 但仍然能够引用它来执行其他操作 我尝试将 Width 设置为 0 但这只会使其变得非常宽 Html Kendo Grid Model Name LineItems Columns columns gt
  • 使用 jQuery 的 AJAX 单选按钮

    我需要帮助来提交带有单选按钮的 RSVP 如下所示 Attending
  • 嵌套方法调用和委托有什么区别?

    考虑以下 第一种方法 public void f3 f2 f1 和这个 第二种方法 class Sample public delegate void MyDelegate string s MyDelegate obj public Sa
  • 如何在 JSON 中使用 read.schema 仅指定特定字段:SPARK Scala

    我正在尝试以编程方式在看起来像 json 的 textFile 上强制执行 schema json 我尝试使用 jsonFile 但问题是从 json 文件列表创建数据帧 spark 必须对数据进行 1 次传递才能为数据帧创建模式 因此它需
  • 获取动态对象中方法调用的通用类型

    我开始使用 Net 中的动态对象 但我不知道如何做某事 我有一个继承自 DynamicObject 的类 并且我重写了 TryInvokeMember 方法 e g class MyCustomDynamicClass DynamicObj
  • Oracle ORA-00902 无效数据类型错误

    我正在尝试创建两个表 这引发了 ORA 00902 错误 无法弄清楚这里出了什么问题 CREATE TABLE VEHICLE STORE MODEL NO VARCHAR2 12 NOT NULL DESCRIPTION VARCHAR2
  • 错误:包 android.hardware.camera2 不存在 OpenCV

    我正在尝试将 OpenCV 模块添加到项目中 但无法解决一些 gradle 问题 这是我的app gradle file apply plugin com android application android compileSdkVers
  • Twitter Bootstrap 手风琴和按钮下拉菜单溢出问题

    我在网站的一部分中使用 Bootstrap 我将手风琴与下拉按钮混合在一起 当按钮位于底部时 问题就出现了 下拉列表被隐藏 因为 accordion body 溢出设置为隐藏 您可以在这里查看 jsfiddle http jsfiddle
  • org.springframework.aop.AopInitationException:建议的空返回值与原始返回类型不匹配:公共抽象字符

    我有一个用列 char 定义的表和我定义的存储库 查询返回该列 现在当db表中的数据为空时 对于特定条件 它给了我错误 org springframework aop AopInvocationException Null return v
  • 空着身体奔跑,永远奔跑

    我构建以下演示代码来测试 java util concurrent CompletableFuture runAsync 函数 import java util ArrayList import java util List public