找回密码
 注册会员
查看: 1072|回复: 0

哪位帮我看看这段JAVA代码为什么抛出IllegalMonitorStateException异常?

[复制链接]
发表于 2010-9-25 10:41:25 | 显示全部楼层 |阅读模式
<p>哪位帮我看看这段JAVA代码为什么抛出IllegalMonitorStateException异常?</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:0 -</p>
<p>解决时间:2010-9-25 10:39</p>
<p>public class Test {</p>
<p>Thread a ;</p>
<p>Thread b ;</p>
<p>RunThreadA c ;</p>
<p>RunThreadB d ;</p>
<p>public Test(){</p>
<p>}</p>
<p>public static class ThreadA{</p>
<p>public ThreadA(){</p>
<p>}</p>
<p>public void print(){</p>
<p>System.out.print("**********");</p>
<p>this.notifyAll();</p>
<p>try {</p>
<p>this.wait();</p>
<p>} catch (InterruptedException e) {</p>
<p>// TODO 自动生成 catch 块</p>
<p>e.printStackTrace();</p>
<p>}</p>
<p>System.out.print("***********");</p>
<p>}</p>
<p>}</p>
<p>public static class ThreadB{</p>
<p>public ThreadB(){</p>
<p>}</p>
<p>public void print(){</p>
<p>try {</p>
<p>wait();</p>
<p>} catch (InterruptedException e) {</p>
<p>// TODO 自动生成 catch 块</p>
<p>e.printStackTrace();</p>
<p>}</p>
<p>for(int k = 0 ; k<5;k++){</p>
<p>System.out.println("**");</p>
<p>}</p>
<p>notifyAll();</p>
<p>}</p>
<p>}</p>
<p>public static class RunThreadA implements Runnable{</p>
<p>ThreadA a = new ThreadA();</p>
<p>public void run(){</p>
<p>a.print();</p>
<p>}</p>
<p>}</p>
<p>public static class RunThreadB implements Runnable{</p>
<p>ThreadB b = new ThreadB();</p>
<p>public void run(){</p>
<p>b.print();</p>
<p>}</p>
<p>}</p>
<p>public static void main(String [] args){</p>
<p>new Thread(new RunThreadA()).start();</p>
<p>new Thread(new RunThreadB()).start();</p>
<p>}</p>
<p>}</p>
<p>问题补充:</p>
<p>1L = - 我服了你了 不管我有几个公共类 我只有这一个test 跟抛出的这个异常有关系么?</p>
<p>提问者: 寿寿奈由美 - 三级</p>
<p>最佳答案</p>
<p>异常应该是线程的wait();抛出来的,</p>
<p>一般非当前线程的引用调用wait方法,抛IllegalMonitorStateException异常,因为Thread的this.wait()方法不一定是当前线程,原因是你的代码定义了两个线程,所以产生了两个同的线程对象,可能返回的当前线程的引用与当前线程,指向的是不同对象 。建议你用组线程</p>
<p>1</p>
<p>回答者:</p>
<p>ffg410 - 五级   2010-9-25 10:37</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>好吧 也许我没学到那里 球方法。。。</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-5-11 09:31

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表