java: wait()、notify() 和同步块

2023-11-25

我了解到调用对象的wait()方法将释放对象监视器(如果存在)。

但我有一些关于打电话的问题notify()另一个线程在此对象上:

  1. 如果另一个(第三个)线程同时拥有对象监视器,(何时)等待线程会醒来吗?

  2. 如果第三个线程调用,等待线程会被唤醒吗wait()在这个物体上?

  3. 是否可以确定线程是否正在等待通知特定对象(java 1.4/java 5)

  4. 如果发生什么情况wait()将被称为finalize() method?


当您从线程中调用 wait() 时,该线程将停止执行并将其添加到对象的等待集中。当您从另一个线程调用notify()时,等待集中的随机线程将被唤醒,如果您调用notifyAll(),则所有线程都准备好执行。

当你调用notify()时,线程已准备好运行,但这并不意味着它会立即执行,所以要小心。

  1. 它会随机从等待集中唤醒一个线程。

  2. 你不知道哪一个会先被唤醒,它不遵循任何顺序。

  3. Thread.getState()

  4. 你会产生僵局。

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

java: wait()、notify() 和同步块 的相关文章

  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 在iPhone App中如何检测设备的屏幕分辨率

    在 iPhone 应用程序中 在设备上运行App时如何检测运行App的设备的屏幕分辨率 CGRect screenBounds UIScreen mainScreen bounds 这将为您提供整个屏幕的分辨率 以点为单位 因此 iPhon
  • 异常处理模式

    这是我看到的一种常见模式 其中与异常相关的错误代码存储为静态最终整数 当创建要抛出的异常时 它是用这些代码之一以及错误消息构造的 这导致要捕获它的方法必须查看代码 然后决定操作过程 另一种选择似乎是为每个异常错误情况声明一个类 尽管相关异常
  • 在 Swing 应用程序中组织操作?

    我当前的应用程序有一个 JFrame 其中约有 15 个操作存储为 JFrame 中的字段 每个操作都是一个匿名类 其中一些非常长 将操作分解为它们自己的类 可能位于称为操作的子包中 是否很常见 如果不是 通常如何控制这种复杂性 Thank
  • 如何使用 mysql 二进制日志从删除数据库命令恢复?

    如何恢复使用 drop database 命令删除的 mysql 数据库 我可以访问二进制日志 这应该使这种类型的回滚成为可能 文档很糟糕 它暗示 DROP DATABASE 是可恢复的 但仅在我不熟悉的奇怪条件下http dev mysq
  • Flutter - 无线电动画未显示在 showDialog 上

    我正在尝试创建一个Radio in a showDialog 但是发生的动画Radio没有出现在showDialog 例如 当点击时foo2什么也没有发生 当你退出时showDialog然后回到它 foo2被选中 下面是代码和 gif 显示
  • C# 委托中的元帅 va_list

    我正在尝试用 c 来完成这项工作 C 标头 typedef void LogFunc const char format va list args bool Init uint32 version LogFunc log C 实现 stat
  • Java 同步和性能的一个方面

    我刚刚意识到我需要在某个方面同步大量数据收集代码 但性能是一个真正值得关注的问题 如果性能下降太多 我的工具就会被淘汰 我将分别写入 int 和 long 以及各种数组 ArrayList 和 Map 应用程序将有多个线程进行函数调用 这些
  • 如何使用 SASS 进行媒体查询?

    我已经通读了 SASS 文档 只能找到如何使用 scss 语法而不是 sass 语法进行媒体查询 sass 是具有严格的空白 没有大括号或分号的语法 如何使用 sass 语法进行媒体查询 media screen and min heigh
  • pcl::RANSAC 分割,获取云中的所有平面?

    我有一个点云库函数 可以检测点云中最大的平面 这很好用 现在 我想扩展此功能以分割云中的每个平面并将这些点复制到新的云中 例如 房间地板上有球体的场景将返回地板和墙壁 但不是球体 因为它不是平面的 如何扩展下面的代码以获得所有飞机 而不仅仅
  • 内部版本号中的分支名称

    我试图将分支名称放入内部版本号中 但找不到正确的参数 我正在使用内部版本号格式 teamcity build branch 0 它可以工作 但是当它尝试构建默认分支 dev 时 teamcity 将其命名为
  • 如何在 osgi 中从字节反序列化对象

    在我的 osgi 应用程序中 我有三个包 travel api table api and utils travel api依赖于取决于table api这取决于utils 注意travel api不直接依赖于utils 我使用 aQute
  • x86 上哪个写屏障更好:lock+addl 或 xchgl?

    Linux 内核使用lock addl 0 0 esp 作为写屏障 而 RE2 库使用xchgl 0 0作为写屏障 有什么区别 哪个更好 x86 也需要读屏障指令吗 RE2 将其读屏障函数定义为 x86 上的无操作 而 Linux 将其定义
  • 是否可以使用 JavaScript 中的对象文字定义动态命名的属性? [复制]

    这个问题在这里已经有答案了 考虑以下 var a foo bar 相当于 var a a foo bar 相当于 var a a foo bar 相当于 var a var b foo a b bar 是否可以做类似的事情 var b fo
  • 在 Android 上将画布保存为位图

    我在将画布的内容放入位图中遇到一些困难 当我尝试执行此操作时 文件大小约为 5 80KB 但它似乎完全是空的 每个像素都是 000 画布上绘制了一系列由手写形成的相互连接的线条 下面是我的视图的 onDraw 我知道它阻塞了 UI 线程 不
  • JavaScript YAML 解析器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个 JavaScript YAML 解析器 它将 YAML 转换为 HTML 页面中可用的内容 我在 Github 上尝试过这个版本 h
  • 默认在 Sublime Text 3 中将程序编译为 c++ 14

    我知道我们可以使用 g 编译器将程序编译为 C 但g 编译器默认为98版本 要将其作为 C 14 运行 我们需要添加 std c 14在终端 Sublime Text 因其轻量级和功能而被认为是竞争性编程中有价值的编辑器 在这些比赛中 时间
  • 使用 Rails 4 将自定义字段/列添加到 Devise

    我正在尝试添加一个full name字段 列到我的用户模型 使用devisegem 和 Rails 4 网上大部分例子推荐使用 attr accessible 但听起来在 Rails 4 中应该以不同的方式处理这个问题 我该如何添加full
  • 分配二进制常量

    有没有办法将二进制值赋给 VB 变量 所有显而易见的选择都不起作用 我尝试过添加前缀 B 附加b但似乎没有任何作用 我寻找它的运气也不好 我不need这适用于我的应用程序 但我只是好奇 所以不需要替代解决方案 编辑 为了澄清起见 我正在寻找
  • 使用 colspan 设置 下 的宽度

    我想设置宽度td in tbody在下面thead具有colspan 2 具有硬定义的列宽 以 为单位 浏览器外壳不会动态调整表格宽度 sample width 100 table layout fixed sample td nth ch
  • java: wait()、notify() 和同步块

    我了解到调用对象的wait 方法将释放对象监视器 如果存在 但我有一些关于打电话的问题notify 另一个线程在此对象上 如果另一个 第三个 线程同时拥有对象监视器 何时 等待线程会醒来吗 如果第三个线程调用 等待线程会被唤醒吗wait 在