当前位置: 首页 > 知识库问答 >
问题:

为什么我会得到不完整的监视器异常[重复]

左仰岳
2023-03-14

我收到一个非法监视器异常。我在谷歌上搜索了一下,但没有什么能说明我做错了什么。

从这个normalclass中,我为其他类创建了一个对象,并将该对象交给thread和同步thread。为什么我会得到这个例外?

/* synchronize the thread object a */
/* here iam calling wait on thread as it need to complete run */     

public class Normalclass 
{
    public static void main(String[] args)
    {
        NormalThread k = new NormalThread();
        Thread a =new Thread(k);
        a.setName("test");
        a.start();

        synchronized(a){
          try{
            a.wait();
          } catch(InterruptedException e){
            System.out.println("exception");
          }
        }
    }
}

public class NormalThread implements Runnable
{
    public void run() 
    {
        for(int i=0;i<=100;i++)
        {
            System.out.println(i);
        }
        notify();
    }
}
/* here iam notifying after the run for loop completed*/      
//  Iam getting illegal monitor exception

共有1个答案

闽焕
2023-03-14

在您的示例中,对NormalThread K对象调用Notify(),而对Thread A对象调用Wait()。您应该在同一个对象上调用这些方法,以便信号传播。

您可以通过抓取k的监视器来修复,以避免使用以下方法出现异常

synchronized(this) {
    notify();
}

但坦率地说,这个例子没有什么意义。通常,您试图完成的工作是通过thread.join()完成的。根据方法javadoc:

等待线程的死亡。

Thread a = new Thread(k);
a.start();
a.join();
 类似资料:
  • 请问为什么第13行的错误是未报告的异常,必须捕获pr声明要抛出

  • 问题内容: 我刚刚尝试了Jasper Report,我正在关注此站点的教程 我也下载了示例源,然后运行它,没有错误。但是,当我使用创建自己的报告时,请对其进行编译,然后将文件添加到我的项目中。还有,当我运行我的程序: 这是我用于显示报告的按钮操作(这只是示例,报告仅包含一个带有参数的文本:outputText): 如果有问题,我已经将所有需要的jar导入到我的项目中,当我使用该教程中的文件时没有问

  • 问题内容: 这个问题已经在这里有了答案 : 如何在Eclipse Web项目中安装JDBC驱动程序而不面对java.lang.ClassNotFoundexception (13个答案) 3年前关闭。 我正在开发一个Web应用程序,使用:Eclipse IDE(Marse),Java 8,Apache tomcat 8,MySQL。我的用户注册代码如下: 我的代码也是正确的,并且我在Eclipse

  • 获取此语句时出错。deleteEntry(Integer.valueOf); 如果在执行dao.delete项(Integer.valueOf(s))时发生异常;捕捉块不能捕捉异常,因为它捕捉""执行异常"具体而言,因此函数本身应该自动抛出异常,因为它的签名已抛出语句我写的捕捉块是用于处理逻辑处理的,如果我在try捕捉之外写同样的语句,它不会给出任何错误。我想了解这里的行为。请好心帮忙

  • 我编写了这段代码,将整个以10为基数的数字转换成二进制。我相信代码就是它所需要的一切,但我无法让工作。 我在这个网站和其他网站上花了几个小时,尝试了无数次的修改,但都没有用。 我已经让代码无错误地编译,但一旦我运行它并输入程序就会崩溃。 下面是代码: 这些是java在我输入数字时抛出的异常。 我希望这是足够的信息。

  • 我正在学习“放心框架”。 我使用http://ziptasticapi.com免费的API为我的演习。 当我打电话: 我得到以下字符串: {“国家”:“美国”、“州”:“正义与发展党”、“城市”:“阿达克”} as响应字符串值。 当我尝试时: 我突然想到: JAVAlang.IllegalStateException:无法分析对象,因为响应中未指定支持的内容类型。内容类型为“文本/html”;字符