如何使用 AtomicBoolean 进行阻塞和等待

2024-01-05

我正在寻找一种暂停线程的方法。

我首先有效地使用布尔标志(称为“暂停”),并用 while 循环包装检查(暂停)。

在 while 循环内有一个Thread.wait()来阻止执行。

我一直在看原子布尔值,除了不阻塞之外,这似乎可以解决问题。

是否有具有块方法的 AtomicBoolean 的替代或扩展版本?

即类似的东西AtomicBoolean.getFalse() of AtomoicBoolean.get(false)?

他们有一个阻塞队列,因此有一个阻塞值。

当前设置是:

while (paused.get()) {
        synchronized (paused) {
            try {

                paused.wait();
            } catch (Exception e) {
            }

            paused.notify();
        }
    }

with

public void pause() {
    if (paused.compareAndSet(false, true)) {
        synchronized (paused) {
            paused.notify();
        }
    }

}


public void resume() {
    if (paused.compareAndSet(true, false)) {
        synchronized (paused) {
            paused.notify();
        }
    } 
}

Use a CountDownLatch of 1:

CountDownLatch conditionLatch = new CountDownLatch(1);

在你想要等待某些条件成立的地方:

conditionLatch.await();

在你想要将条件设置为 true 的地方:

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

如何使用 AtomicBoolean 进行阻塞和等待 的相关文章

随机推荐

  • 为什么“npm run dev”不能在新的“npx create-next-app”上工作?

    我刚刚创建了一个新的 Next 应用程序npx create next app 看起来已经成功运行了 npx create next app 8 46 31 npx installed 1 in 8 826s What is your pr
  • 使用 LINQ 逐字读取文本文件

    我正在学习 LINQ 并且想使用 LINQ 逐字阅读文本文件 比如说电子书 这就是为什么我可以想出 static void Main string content File ReadAllLines text txt var query f
  • 处理 ASP.NET MVC 中的路由错误

    我知道如何设置自己的路由 但是如何处理路由表漏洞中的路由呢 我的意思是 我猜默认 controller action id 路线可能是一个通用的包罗万象的东西 但我不确定这是否是正确的方法 我喜欢让我的用户知道他们请求的数据 页面 不存在
  • 使用 JSONPath 过滤 JSON 文档中的属性

    我有一个任意定义的 JSON 文档 并且我希望能够应用JSONPath https goessner net articles JsonPath 类似于属性白名单过滤器的表达式 所有选定的节点和他们的祖先回到根节点保留 所有其他节点都被删除
  • MIPS 中的递归函数如何工作?

    我是 MIPS 的新手 因为我开始为大学学习 MIPS 汇编 并且在理解 MIPS 中的递归函数如何工作方面遇到了问题 例如 我有这个程序 用 C 语言 可以用 MIPS 编写 int fact int n if n lt 1 return
  • C# 9.0 记录 - ToString 不继承

    考虑 the ratioale for Wrapper is that it has a Json serializer that serialize through Field not included in this example r
  • 在 cpp 文件的匿名命名空间中使用模板函数是否正确?

    我想在 cpp 文件的匿名命名空间内有一个模板函数 纯粹作为不同大小的 std array 类型的辅助函数 此函数不得在该翻译单元之外的任何地方使用 令我惊讶的是 当我在 MSVC 14 1 简化代码 中尝试时 它立即生效 namespac
  • R中which.max函数的容差是多少?

    基于我在这里讨论的一个问题 https stackoverflow com a 57364028 2725773 https stackoverflow com a 57364028 2725773我想知道的公差 精度是多少which ma
  • Redux - 管理预加载状态

    我正在构建一个应用程序 我需要预加载people and planet data 将来可能会增加更多预载要求 在启动应用程序时 我希望在代表应用程序全局状态的商店中具有价值loaded
  • WebClient 下载文件显示错误的百分比

    我正在使用一个System Net WebClient在我的应用程序中异步下载文件 由于某种原因 在某些系统上 百分比计算错误 我的 更新的 DownloadProgressChanged 事件 WebClient client new W
  • unique_ptr::get() 而不是 &* 有什么用?

    我在用着unique ptr管理一些资源以便在任何情况下都能安全销毁 等等 void do something BLOB b unique ptr
  • 在Windows服务器中使用Word对象

    我有 asp net 应用程序 它有时会获取 Word 文档 编辑其中的一些数据并将其发送到电子邮件 虽然这在我有 microsoft word 的本地计算机上运行良好 但当我尝试在没有安装 microsoft word 的 Windows
  • 如何在 Java 中将 YAML 转换为 JSON?

    我只想使用 Java 将一个包含 yaml 的字符串转换为另一个包含相应转换后的 json 的字符串 例如假设我有这个yaml的内容 paper uuid 8a8cbf60 e067 11e3 8b68 0800200c9a66 name
  • Undertow上传多部分文件超过设置值时抛出RuntimeException

    我正在运行完整版本的 Spring boot 上传文件指南春季指南 https spring io guides gs uploading files 但我使用 Undertow 作为嵌入式 servlet 而不是默认的 Tomcat 它奏
  • 如何在php中创建html表格

    我有以下代码片段 基本上使用爆炸来拆分这些值 数据 prod txt PREFIX abc PART null FILE myprojects school out data feed abc 2010120810 gz2 PREFIX e
  • 在 O(n) 时间和 O(1) 额外空间内找到最大重复数

    在 O n 时间和 O 1 额外空间内找到最大重复数 出现次数最多的数 我认为我可以使用维护计数数组的计数排序阶段 然后可以在 O N 中完成 我对吗 但如何处理多余的空间 还有其他高效的算法吗 如果没有进一步了解数组中可能的数字 我认为这
  • 获取当前.net TransactionScope IsolationLevel

    我有一个实用程序方法在我的应用程序中创建 TransactionScope 我想做一个单元测试来验证返回的 TransactionScope 是否具有正确的 IsolationLevel 设置 以确保没有人可以在不破坏测试的情况下修改代码
  • MySQL 中的空 IN 子句参数列表

    当您执行 SQL 查询时会发生什么IN条款为空 例如 SELECT user WHERE id IN MySQL 是否会按预期处理此问题 即始终为 false 如果没有 我的应用程序在构建时如何处理这种情况IN动态条款 如果我有一个正在构建
  • 如何从查看源代码中隐藏 WordPress 详细信息

    我有一个 WordPress 网站 但是当我按 Ctrl U 时 我可以看到有关我的网站的所有网站信息 主题 wp 内容等 但我看到一个网站http www indiavisiontv com http www indiavisiontv
  • 如何使用 AtomicBoolean 进行阻塞和等待

    我正在寻找一种暂停线程的方法 我首先有效地使用布尔标志 称为 暂停 并用 while 循环包装检查 暂停 在 while 循环内有一个Thread wait 来阻止执行 我一直在看原子布尔值 除了不阻塞之外 这似乎可以解决问题 是否有具有块