我收到一个非法监视器异常。我在谷歌上搜索了一下,但没有什么能说明我做错了什么。
从这个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
在您的示例中,对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”;字符