java - 如何在 main 方法中调用 wait() 方法?如果我使用它,它将给出 java.lang.IllegalMonitorStateException

标签 java

我收到错误:

    package main_test;
    public class Main {
    public static void main(String[] args) throws InterruptedException
    {
        Main m = new Main();
        System.out.println("Main Started");
            m.wait();
        System.out.println("Main Terminated");  
    }
}

最佳答案

您必须先获取锁,然后才能调用 wait。尝试这样的事情:

  public static void main(String[] args) throws InterruptedException {
    Main m = new Main();
    System.out.println("Main Started");
    synchronized (m) {
      m.wait();
    }
    System.out.println("Main Terminated");
  }

但是现在程序显然不会终止。其他一些线程需要对您调用 wait() 的对象调用 notify()。 (这就是为什么使用局部变量是一个坏主意,但这只是一个例子......)

请参阅java tutorial了解更多信息。

关于java - 如何在 main 方法中调用 wait() 方法?如果我使用它,它将给出 java.lang.IllegalMonitorStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32088544/

相关文章:

Java 调试消息/日志,指示输入了哪个类或方法

java - 如何在 Java 中使用 MLeap DenseTensor

Java 相当于 Pythons urllib.urlencode(基于 HashMap 的 UrlEncode)

java - jsch 更改目录并获取内容

java - 在 Java Web 应用程序中实现协作身份验证

java - 在语音进行时突出显示文本

java - 将文件中的文本读取到 JTextField 数组中

java - 是否可以以编程方式使用 "Add unimplemented methods"

cxf - 避免在 Apache CXF wsdl2java 任务中创建 JDK 类

java - 用于创建 pdf 的 pdfbox : how to do the text layout?