java - 为什么编译器不提示在非同步块(synchronized block)中使用等待

标签 java multithreading wait

据我所知,当我们想在 java 中调用 wait 时,我们需要同步 API/ block ,否则它将在运行时以 IllegalMonitorStateException 结束。我的问题是,既然我们非常确定它总是导致异常,为什么编译器不提示它?

最佳答案

因为您可能一直在调用堆栈中较高位置的同步块(synchronized block)中调用具有 wait 的方法。编译器只能找到代码的语法有效性 - 它无法检查逻辑错误。

关于java - 为什么编译器不提示在非同步块(synchronized block)中使用等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304028/

相关文章:

java - GWT UiBinder I18n

java - Kafka 生产者从 Java 为主题创建分区

java - 是否可以合并 java\jre\security\lib\cacerts 文件

java - IllegalMonitorStateException notify() 和 wait()

jquery - 如何在网络驱动程序中检查页面是否已完全加载?

signals - 在 Bourne shell 中同时监视信号和进程退出

java - 构造函数 JavaStreamingContext(SparkConf, Duration) 未定义

c - pthread 示例中的查询 regaring 代码序列

java - 保持 Java 程序无限期运行的有效方法?

c++ - 是否有一种可接受的方式来运行线程或顺序执行?